<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-07T09:52:41.614311" 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-07T09:52:42.240452" 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-07T09:52:42.236404" elapsed="0.004120"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-07T09:52:42.235931" elapsed="0.004706"/>
</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-07T09:52:42.245674" 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-07T09:52:42.242080" elapsed="0.003629"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-07T09:52:42.245947" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:42.245821" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:42.245788" elapsed="0.000234"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.246615" 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-07T09:52:42.246208" elapsed="0.000472"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.247196" 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-07T09:52:42.246856" elapsed="0.000369"/>
</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-07T09:52:42.247809" elapsed="0.000306"/>
</kw>
<msg time="2026-04-07T09:52:42.248242" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:42.248301" 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-07T09:52:42.247393" elapsed="0.000933"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.248928" 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-07T09:52:42.248489" elapsed="0.000467"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.250456" 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-07T09:52:42.250166" elapsed="0.000320"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.250924" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-07T09:52:42.250649" elapsed="0.000301"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.251594" 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-07T09:52:42.251107" elapsed="0.000535"/>
</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-07T09:52:42.254863" elapsed="0.000244"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.255596" level="INFO">${member_ip} = 10.30.170.169</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-07T09:52:42.255259" elapsed="0.000378"/>
</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-07T09:52:42.255788" elapsed="0.000335"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.256984" 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-07T09:52:42.256674" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-07T09:52:42.257061" elapsed="0.000045"/>
</return>
<msg time="2026-04-07T09:52:42.257235" 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-07T09:52:42.256339" elapsed="0.000921"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:52:42.257958" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.169:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7e7389203490&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-07T09:52:42.257483" elapsed="0.000642"/>
</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-07T09:52:42.258285" 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-07T09:52:42.254166" elapsed="0.004380"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:52:42.253934" elapsed="0.004664"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-07T09:52:42.251712" elapsed="0.006937"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.259292" 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-07T09:52:42.258871" elapsed="0.000467"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.259926" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.169'}</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-07T09:52:42.259498" elapsed="0.000473"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.260555" 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-07T09:52:42.260151" elapsed="0.000448"/>
</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-07T09:52:42.249686" elapsed="0.011005"/>
</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-07T09:52:42.241706" elapsed="0.019045"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-07T09:52:42.260949" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:42.260823" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:42.260801" elapsed="0.000221"/>
</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-07T09:52:42.264073" 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-07T09:52:42.263653" elapsed="0.000447"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.264539" 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-07T09:52:42.264250" elapsed="0.000315"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-07T09:52:42.264609" elapsed="0.000048"/>
</return>
<msg time="2026-04-07T09:52:42.264786" 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-07T09:52:42.263319" elapsed="0.001492"/>
</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-07T09:52:42.265774" level="INFO">${member_ip} = 10.30.170.169</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-07T09:52:42.265497" elapsed="0.000303"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:42.266772" 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-07T09:52:42.266881" 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-07T09:52:42.266417" elapsed="0.000490"/>
</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-07T09:52:42.270528" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:42.269644" elapsed="0.000969"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:42.269604" elapsed="0.001070"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:42.271338" 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-07T09:52:42.271572" 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-07T09:52:42.270876" elapsed="0.000762"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.272577" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.169" 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-07T09:52:42.271907" elapsed="0.000797"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:42.273871" 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-07T09:52:42.272962" elapsed="0.000959"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.275791" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:42.275968" 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-07T09:52:42.275220" elapsed="0.000791"/>
</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-07T09:52:42.276333" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:42.278070" level="INFO">Logging into '10.30.170.169:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:42.617782" 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  7 09:52:38 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.169
  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-168-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-07T09:52:42.277746" elapsed="0.340221"/>
</kw>
<msg time="2026-04-07T09:52:42.618065" 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-07T09:52:42.277203" elapsed="0.341065"/>
</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-07T09:52:42.274341" elapsed="0.344101"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:42.619374" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-07T09:52:42.633177" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-07T09:52:42.633616" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:52:42.633911" 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-07T09:52:42.618851" elapsed="0.015173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:42.634752" elapsed="0.001245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.638395" 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-07T09:52:42.637213" elapsed="0.001331"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:42.639249" elapsed="0.000077"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:42.638853" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:42.638800" elapsed="0.000695"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:52:42.639992" elapsed="0.000089"/>
</return>
<status status="PASS" start="2026-04-07T09:52:42.639617" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:42.639590" elapsed="0.000660"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:42.640335" 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-07T09:52:42.644863" elapsed="0.000816"/>
</kw>
<kw name="Open 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-07T09:52:42.646093" elapsed="0.000421"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:42.646910" elapsed="0.000357"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:42.641038" elapsed="0.006336"/>
</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-07T09:52:42.268704" elapsed="0.379049"/>
</kw>
<msg time="2026-04-07T09:52:42.647847" 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-07T09:52:42.268060" elapsed="0.379880"/>
</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-07T09:52:42.267544" elapsed="0.380517"/>
</kw>
<msg time="2026-04-07T09:52:42.648120" 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-07T09:52:42.267052" elapsed="0.381146"/>
</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-07T09:52:42.651297" elapsed="0.000320"/>
</kw>
<kw name="Open 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-07T09:52:42.651834" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:42.652195" elapsed="0.000101"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:42.648601" elapsed="0.003747"/>
</kw>
<msg time="2026-04-07T09:52:42.652442" 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-07T09:52:42.266003" elapsed="0.386464"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.652910" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:42.652658" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-07T09:52:42.653009" elapsed="0.000040"/>
</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-07T09:52:42.265158" elapsed="0.387999"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:52:42.264993" elapsed="0.388201"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-07T09:52:42.264863" elapsed="0.388375"/>
</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-07T09:52:42.261241" elapsed="0.392063"/>
</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-07T09:52:42.653450" elapsed="0.000234"/>
</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-07T09:52:42.666793" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:42.666676" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:42.666654" elapsed="0.000207"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:42.667157" 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-07T09:52:42.667264" 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-07T09:52:42.667010" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.667719" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:42.667434" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:42.668154" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:42.667906" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:42.668990" 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-07T09:52:42.668725" elapsed="0.000488">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-07T09:52:42.669330" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:52:42.669375" 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-07T09:52:42.668345" elapsed="0.001053"/>
</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-07T09:52:42.669718" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:42.669476" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:42.669456" elapsed="0.000364"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:42.670544" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:42.670281" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:42.670616" elapsed="0.000049"/>
</return>
<msg time="2026-04-07T09:52:42.670788" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:42.670013" elapsed="0.000799"/>
</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-07T09:52:42.670957" elapsed="0.000424"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:42.671681" level="INFO">index=4
host=10.30.170.169
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-07T09:52:42.671786" level="INFO">${karaf_connection_object} = index=4
host=10.30.170.169
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-07T09:52:42.671548" elapsed="0.000265"/>
</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-07T09:52:42.671954" elapsed="0.002101"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:42.674524" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:42.676232" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:42.674208" elapsed="0.003452">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:42.680735" elapsed="0.000348"/>
</kw>
<kw name="Open 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-07T09:52:42.681238" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:42.681529" elapsed="0.000116"/>
</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-07T09:52:42.678471" elapsed="0.003229"/>
</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-07T09:52:42.677952" elapsed="0.003795"/>
</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="FAIL" start="2026-04-07T09:52:42.666370" elapsed="0.015469">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:43.702015" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:43.701822" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:43.701781" elapsed="0.000348"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:43.702590" 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-07T09:52:43.702820" 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-07T09:52:43.702344" elapsed="0.000506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:43.703364" 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-07T09:52:43.703010" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:43.703930" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:43.703567" elapsed="0.000408"/>
</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-07T09:52:43.704562" elapsed="0.000207"/>
</kw>
<msg time="2026-04-07T09:52:43.704876" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:43.704922" 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-07T09:52:43.704136" elapsed="0.000808"/>
</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-07T09:52:43.705892" elapsed="0.000140"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:52:43.706836" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:52:43.706499" elapsed="0.001052">Cannot open session, you need to establish a connection first.</status>
</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-07T09:52:43.706187" elapsed="0.001451"/>
</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-07T09:52:43.708207" elapsed="0.000108"/>
</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-07T09:52:43.707831" elapsed="0.000528"/>
</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-07T09:52:43.705333" elapsed="0.003069"/>
</kw>
<status status="PASS" start="2026-04-07T09:52:43.705020" elapsed="0.003430"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:43.705001" elapsed="0.003475"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:43.709231" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:43.708965" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:43.709305" elapsed="0.000036"/>
</return>
<msg time="2026-04-07T09:52:43.709465" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:43.708695" elapsed="0.000794"/>
</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-07T09:52:43.709659" elapsed="0.000439"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:43.710466" level="INFO">index=6
host=10.30.170.169
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-07T09:52:43.710566" level="INFO">${karaf_connection_object} = index=6
host=10.30.170.169
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-07T09:52:43.710358" elapsed="0.000234"/>
</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-07T09:52:43.710836" elapsed="0.002479"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:43.713751" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:43.715138" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:43.713473" elapsed="0.002081">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:43.718640" 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-07T09:52:43.719180" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:43.719469" elapsed="0.000097"/>
</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-07T09:52:43.716508" elapsed="0.003132"/>
</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-07T09:52:43.715985" elapsed="0.003704"/>
</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="FAIL" start="2026-04-07T09:52:43.701189" elapsed="0.018586">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:44.742894" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:44.742662" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:44.742595" elapsed="0.000432"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:44.743660" 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-07T09:52:44.743839" 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-07T09:52:44.743365" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:44.744596" level="INFO">{1: 6}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:44.744091" elapsed="0.000600"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:44.745209" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:44.744896" elapsed="0.000357"/>
</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-07T09:52:44.745894" elapsed="0.000191"/>
</kw>
<msg time="2026-04-07T09:52:44.746197" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:44.746244" level="INFO">${old_connection_index} = 6</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-07T09:52:44.745413" elapsed="0.000853"/>
</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-07T09:52:44.747107" elapsed="0.000146"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:52:44.747955" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:52:44.747747" elapsed="0.000839">Cannot open session, you need to establish a connection first.</status>
</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-07T09:52:44.747411" elapsed="0.001266"/>
</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-07T09:52:44.749155" elapsed="0.000106"/>
</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-07T09:52:44.748839" elapsed="0.000467"/>
</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-07T09:52:44.746562" elapsed="0.002789"/>
</kw>
<status status="PASS" start="2026-04-07T09:52:44.746343" elapsed="0.003141"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:44.746323" elapsed="0.003189"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:44.750322" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:44.750054" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:44.750396" elapsed="0.000035"/>
</return>
<msg time="2026-04-07T09:52:44.750560" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:44.749785" elapsed="0.000800"/>
</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-07T09:52:44.750748" elapsed="0.000432"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:44.751457" level="INFO">index=8
host=10.30.170.169
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-07T09:52:44.751563" level="INFO">${karaf_connection_object} = index=8
host=10.30.170.169
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-07T09:52:44.751347" elapsed="0.000242"/>
</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-07T09:52:44.751745" elapsed="0.002341"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:44.754512" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:44.756014" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:44.754247" elapsed="0.002184">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:44.759288" elapsed="0.000363"/>
</kw>
<kw name="Open 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-07T09:52:44.759805" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:44.760096" 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-07T09:52:44.757254" elapsed="0.002998"/>
</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-07T09:52:44.756741" elapsed="0.003555"/>
</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="FAIL" start="2026-04-07T09:52:44.741919" elapsed="0.018463">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:45.779543" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:45.779382" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:45.779356" elapsed="0.000293"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.780037" 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-07T09:52:45.780155" 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-07T09:52:45.779840" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:45.780655" level="INFO">{1: 8}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:45.780341" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:45.781112" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:45.780853" elapsed="0.000303"/>
</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-07T09:52:45.781726" elapsed="0.000194"/>
</kw>
<msg time="2026-04-07T09:52:45.782024" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:45.782071" level="INFO">${old_connection_index} = 8</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-07T09:52:45.781311" elapsed="0.000782"/>
</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-07T09:52:45.782927" elapsed="0.000139"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.783887" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:52:45.783704" elapsed="0.000726">Cannot open session, you need to establish a connection first.</status>
</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-07T09:52:45.783278" elapsed="0.001215"/>
</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-07T09:52:45.784987" elapsed="0.000099"/>
</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-07T09:52:45.784673" elapsed="0.000458"/>
</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-07T09:52:45.782388" elapsed="0.002818"/>
</kw>
<status status="PASS" start="2026-04-07T09:52:45.782171" elapsed="0.003119"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:45.782151" elapsed="0.003164"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:45.786094" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:45.785827" elapsed="0.000307"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:45.786182" elapsed="0.000033"/>
</return>
<msg time="2026-04-07T09:52:45.786338" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:45.785524" elapsed="0.000838"/>
</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-07T09:52:45.786505" elapsed="0.000512"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.787320" level="INFO">index=10
host=10.30.170.169
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-07T09:52:45.787421" level="INFO">${karaf_connection_object} = index=10
host=10.30.170.169
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-07T09:52:45.787209" elapsed="0.000248"/>
</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-07T09:52:45.787597" elapsed="0.002293"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.790304" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:45.791711" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:45.790043" elapsed="0.002060">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:45.794988" elapsed="0.000367"/>
</kw>
<kw name="Open 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-07T09:52:45.795507" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:45.795810" elapsed="0.000094"/>
</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-07T09:52:45.792927" elapsed="0.003027"/>
</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-07T09:52:45.792391" elapsed="0.003607"/>
</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="FAIL" start="2026-04-07T09:52:45.778906" elapsed="0.017176">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<msg time="2026-04-07T09:52:45.796174" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</msg>
<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="FAIL" start="2026-04-07T09:52:42.654413" elapsed="3.141853">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:42.654046" elapsed="3.142285"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:52:42.653911" elapsed="3.142461"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-07T09:52:42.653747" elapsed="3.142667"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-07T09:52:42.241033" elapsed="3.555444"/>
</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-07T09:52:45.799017" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:45.798883" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:45.798864" elapsed="0.000220"/>
</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-07T09:52:45.803531" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:45.803424" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:45.803406" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:52:45.804547" 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-07T09:52:45.804159" elapsed="0.000415"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:52:45.805032" 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-07T09:52:45.804739" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-07T09:52:45.805101" elapsed="0.000030"/>
</return>
<msg time="2026-04-07T09:52:45.805255" 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-07T09:52:45.803835" elapsed="0.001444"/>
</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-07T09:52:45.810490" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:45.810365" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:45.810346" 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-07T09:52:45.811898" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:45.811759" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:45.811740" elapsed="0.000230"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:45.812470" level="INFO">${karaf_connection_index} = 10</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-07T09:52:45.812147" elapsed="0.000350"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.812905" 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-07T09:52:45.812665" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.814037" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:52:45.813593" elapsed="0.001280">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-07T09:52:45.815047" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-07T09:52:45.815106" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</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-07T09:52:45.813089" elapsed="0.002045"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.816443" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-07T09:52:45.815824" elapsed="0.001428">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-07T09:52:45.817392" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-07T09:52:45.817438" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</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-07T09:52:45.815313" elapsed="0.002148"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-07T09:52:45.818440" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/020__connection_manager.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-07T09:52:45.817784" elapsed="0.000738">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/020__connection_manager.robot"</status>
</kw>
<status status="FAIL" start="2026-04-07T09:52:45.817536" elapsed="0.001189">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/020__connection_manager.robot"</status>
</branch>
<status status="FAIL" start="2026-04-07T09:52:45.817517" elapsed="0.001252">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/020__connection_manager.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-07T09:52:45.818958" elapsed="0.000026"/>
</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-07T09:52:45.819245" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:45.819059" elapsed="0.000378"/>
</branch>
<status status="NOT RUN" start="2026-04-07T09:52:45.819039" elapsed="0.000425"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-07T09:52:45.819542" elapsed="0.000017"/>
</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-07T09:52:45.821441" elapsed="0.000464"/>
</kw>
<kw name="Open 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-07T09:52:45.822230" elapsed="0.000282"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:45.822952" elapsed="0.000233"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:45.820708" elapsed="0.002566"/>
</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-07T09:52:45.819821" 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="FAIL" start="2026-04-07T09:52:45.811445" elapsed="0.012046">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/020__connection_manager.robot"</status>
</kw>
<msg time="2026-04-07T09:52:45.823594" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:52:45.823664" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/020__connection_manager.robot...</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-07T09:52:45.810714" elapsed="0.012976"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-07T09:52:45.823874" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:45.823766" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:45.823747" elapsed="0.000190"/>
</if>
<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-07T09:52:45.824774" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:45.824558" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:45.824534" elapsed="0.000306"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.826518" 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-07T09:52:45.826703" 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-07T09:52:45.824985" elapsed="0.001751"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:45.827175" level="INFO">{1: 10}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:45.826914" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:45.827595" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:45.827359" elapsed="0.000297"/>
</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-07T09:52:45.828145" elapsed="0.000273"/>
</kw>
<msg time="2026-04-07T09:52:45.828516" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:45.828561" level="INFO">${old_connection_index} = 10</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-07T09:52:45.827804" elapsed="0.000779"/>
</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-07T09:52:45.829766" elapsed="0.000249"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.831365" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:52:45.831076" elapsed="0.000757">Cannot open session, you need to establish a connection first.</status>
</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-07T09:52:45.830238" elapsed="0.001686"/>
</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-07T09:52:45.832934" elapsed="0.000188"/>
</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-07T09:52:45.832155" elapsed="0.001037"/>
</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-07T09:52:45.828983" elapsed="0.004289"/>
</kw>
<status status="PASS" start="2026-04-07T09:52:45.828770" elapsed="0.004553"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:45.828750" elapsed="0.004598"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:45.834253" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:45.833819" elapsed="0.000461"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:45.834329" elapsed="0.000030"/>
</return>
<msg time="2026-04-07T09:52:45.834540" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:45.833539" elapsed="0.001032"/>
</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-07T09:52:45.834776" elapsed="0.000423"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.835462" level="INFO">index=13
host=10.30.170.169
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-07T09:52:45.835561" level="INFO">${karaf_connection_object} = index=13
host=10.30.170.169
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-07T09:52:45.835358" elapsed="0.000228"/>
</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-07T09:52:45.835741" elapsed="0.002109"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.838261" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:45.839436" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:45.838003" elapsed="0.001823">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:45.843114" elapsed="0.000637"/>
</kw>
<kw name="Open 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-07T09:52:45.843986" elapsed="0.000394"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:45.844577" elapsed="0.000234"/>
</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-07T09:52:45.840589" elapsed="0.004303"/>
</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-07T09:52:45.840092" elapsed="0.004847"/>
</kw>
<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="FAIL" start="2026-04-07T09:52:45.824313" elapsed="0.020708">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:45.845338" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-07T09:52:45.845411" 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="FAIL" start="2026-04-07T09:52:45.810072" elapsed="0.035443">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<msg time="2026-04-07T09:52:45.845617" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:52:45.845677" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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-07T09:52:45.805679" elapsed="0.040022"/>
</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-07T09:52:45.846018" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:45.845778" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:45.845759" elapsed="0.000335"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:52:45.805529" elapsed="0.040587"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-07T09:52:45.805337" elapsed="0.040816"/>
</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-07T09:52:45.803106" elapsed="0.043102"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-07T09:52:45.797116" elapsed="0.049144"/>
</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-07T09:52:45.796651" elapsed="0.049648"/>
</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-07T09:52:42.235529" elapsed="3.610850"/>
</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-07T09:52:45.859428" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:45.859320" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:45.859301" elapsed="0.000194"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.859783" 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-07T09:52:45.859921" 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-07T09:52:45.859652" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:45.860346" level="INFO">{1: 13}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:45.860092" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:45.860794" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:45.860532" elapsed="0.000305"/>
</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-07T09:52:45.861336" elapsed="0.000177"/>
</kw>
<msg time="2026-04-07T09:52:45.861609" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:45.861673" level="INFO">${old_connection_index} = 13</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-07T09:52:45.860985" elapsed="0.000711"/>
</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-07T09:52:45.862558" elapsed="0.000157"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.863332" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:52:45.863185" elapsed="0.000602">Cannot open session, you need to establish a connection first.</status>
</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-07T09:52:45.862872" elapsed="0.000977"/>
</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-07T09:52:45.864313" elapsed="0.000093"/>
</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-07T09:52:45.864006" elapsed="0.000445"/>
</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-07T09:52:45.861983" elapsed="0.002511"/>
</kw>
<status status="PASS" start="2026-04-07T09:52:45.861773" elapsed="0.002768"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:45.861754" elapsed="0.002812"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:45.865303" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:45.865042" elapsed="0.000287"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:45.865376" elapsed="0.000030"/>
</return>
<msg time="2026-04-07T09:52:45.865524" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:45.864780" elapsed="0.000768"/>
</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-07T09:52:45.865712" elapsed="0.000422"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.866457" level="INFO">index=15
host=10.30.170.169
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-07T09:52:45.866557" level="INFO">${karaf_connection_object} = index=15
host=10.30.170.169
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-07T09:52:45.866334" elapsed="0.000249"/>
</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-07T09:52:45.866744" elapsed="0.002216"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.869377" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:45.870502" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:45.869126" elapsed="0.001790">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:45.873728" elapsed="0.000348"/>
</kw>
<kw name="Open 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-07T09:52:45.874270" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:45.874556" elapsed="0.000118"/>
</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-07T09:52:45.871714" elapsed="0.003013"/>
</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-07T09:52:45.871189" elapsed="0.003583"/>
</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="FAIL" start="2026-04-07T09:52:45.857675" elapsed="0.017210">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<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="NOT RUN" start="2026-04-07T09:52:45.875037" elapsed="0.000021"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="NOT RUN" start="2026-04-07T09:52:45.875263" elapsed="0.000024"/>
</kw>
<status status="FAIL" start="2026-04-07T09:52:42.235152" elapsed="3.640216">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<test id="s1-s1-t1" name="Connecting an OVS instance to the controller" line="26">
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.875451" elapsed="0.000467">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t2" name="Get Operational Topology to verify the ovs instance is connected to the controller" line="31">
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.876127" elapsed="0.000394">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t3" name="Verify OVS Not In Config Topology" line="44">
<doc>This request will fetch the configuration topology from configuration data store</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.876716" elapsed="0.000434">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t4" name="Create bridge manually" line="48">
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.877329" elapsed="0.000313">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t5" name="Get Operational Topology to verify the bridge has been added" line="51">
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.877819" elapsed="0.000566">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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">
<doc>This request will fetch the configuration topology from configuration data store</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.878566" elapsed="0.000439">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t7" name="Create a Bridge through controller" line="68">
<doc>This will create bridge on the specified OVSDB node.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.879177" elapsed="0.000370">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t8" name="Get Operational Topology to verify the bridge has been added through rest call" line="72">
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.879742" elapsed="0.000391">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t9" name="Get Config Topology to verify the entry added to the config datastore" line="83">
<doc>This request will fetch the configuration topology from configuration data store</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.880321" elapsed="0.000507">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t10" name="Create bridge of already added bridge" line="89">
<doc>This will add bridge to the config datastore</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.880998" elapsed="0.000357">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t11" name="Get Config Topology to verify the entry of existing bridge added to the config datastore" line="93">
<doc>This request will fetch the configuration topology from configuration data store</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.881524" elapsed="0.000426">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t12" name="Delete bridge manually" line="99">
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.882149" elapsed="0.000296">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t13" name="Get Operational Topology to verify the bridge has been deleted manually" line="102">
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.882614" elapsed="0.000380">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t14" name="Config Topology Still Contains Bridge" line="113">
<doc>This request will fetch the configuration topology from configuration data store</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.883163" elapsed="0.000418">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t15" name="Delete the Bridge through rest call" line="119">
<doc>This request will delete the bridge node from the config data store.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.883771" elapsed="0.000391">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t16" name="Get Operational Topology after Deletion of Bridge" line="126">
<doc>This request will fetch the operational topology after the Bridge is deleted</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:45.884336" elapsed="0.000452">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t17" name="Check For Bug 4756" line="186">
<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="FAIL" start="2026-04-07T09:52:45.884956" elapsed="0.000427">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s1-t18" name="Check For Bug 4794" line="194">
<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="FAIL" start="2026-04-07T09:52:45.885554" elapsed="0.000547">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<kw name="Suite Teardown" type="TEARDOWN">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:52:45.887455" level="INFO">@{uris} = [ /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovscon_br1 | /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%...</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-07T09:52:45.886975" elapsed="0.000508"/>
</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-07T09:52:45.890780" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:45.890494" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:45.890474" elapsed="0.000387"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.891137" 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-07T09:52:45.891236" 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-07T09:52:45.891003" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:45.891793" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.229" 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-07T09:52:45.891403" elapsed="0.000435"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.892337" level="INFO">${conn_id} = 17</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-07T09:52:45.891983" elapsed="0.000380"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:45.893189" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:45.893266" 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-07T09:52:45.892919" 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-07T09:52:45.893437" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:45.894764" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:46.641889" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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-168-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-07T09:52:45.894351" elapsed="0.747697"/>
</kw>
<msg time="2026-04-07T09:52:46.642133" 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-07T09:52:45.893982" elapsed="0.748246"/>
</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-07T09:52:45.892567" elapsed="0.749771"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:46.642851" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-07T09:52:47.882229" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:52:47.882713" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:52:47.882826" 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-07T09:52:46.642588" elapsed="1.240297"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:47.883412" elapsed="0.000705"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:47.885311" 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-07T09:52:47.884534" elapsed="0.001086"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:47.886198" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:47.885887" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:47.885825" 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-07T09:52:47.886881" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-07T09:52:47.886545" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:47.886495" elapsed="0.000625"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:47.887197" 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-07T09:52:47.894499" elapsed="0.000450"/>
</kw>
<kw name="Open 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-07T09:52:47.895157" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:47.895556" elapsed="0.000145"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:47.888046" elapsed="0.007725"/>
</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-07T09:52:45.890010" elapsed="2.005881"/>
</kw>
<msg time="2026-04-07T09:52:47.895965" 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-07T09:52:45.889382" elapsed="2.006664"/>
</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-07T09:52:45.888951" elapsed="2.007194"/>
</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-07T09:52:47.898701" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:47.898338" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:47.898313" elapsed="0.000493"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:47.899173" 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-07T09:52:47.899302" 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-07T09:52:47.898991" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:47.900025" 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.229" 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-07T09:52:47.899531" elapsed="0.000553"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:47.900765" level="INFO">${conn_id} = 19</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-07T09:52:47.900288" elapsed="0.000510"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:47.901855" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:47.901933" 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-07T09:52:47.901515" elapsed="0.000442"/>
</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-07T09:52:47.902119" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:47.903450" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:48.231805" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:52:46 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:52:47.903030" elapsed="0.328995"/>
</kw>
<msg time="2026-04-07T09:52:48.232262" 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-07T09:52:47.902657" elapsed="0.329766"/>
</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-07T09:52:47.901064" elapsed="0.331552"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:48.233375" 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-07T09:52:48.265874" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-07T09:52:48.266198" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:52:48.266300" 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-07T09:52:48.233017" elapsed="0.033334"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:48.266828" elapsed="0.000996"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:48.268950" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:48.268241" elapsed="0.000845"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:48.269593" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:48.269290" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:48.269235" elapsed="0.000558"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:52:48.270248" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-07T09:52:48.269973" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:48.269933" elapsed="0.000494"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:48.270479" 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-07T09:52:48.274557" elapsed="0.000529"/>
</kw>
<kw name="Open 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-07T09:52:48.275322" elapsed="0.000246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:48.275815" elapsed="0.000165"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:48.270974" elapsed="0.005088"/>
</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-07T09:52:47.897731" elapsed="0.378470"/>
</kw>
<msg time="2026-04-07T09:52:48.276283" 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-07T09:52:47.896949" elapsed="0.379428"/>
</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-07T09:52:47.896361" elapsed="0.380163"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-07T09:52:45.888409" elapsed="2.388203"/>
</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-07T09:52:48.279694" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:48.279283" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:48.279255" elapsed="0.000563"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:48.280256" 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-07T09:52:48.280412" 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-07T09:52:48.280052" elapsed="0.000399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:48.281282" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.229" 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-07T09:52:48.280686" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:48.282204" 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-07T09:52:48.281570" elapsed="0.000680"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:48.283147" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:48.283227" 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-07T09:52:48.282853" 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-07T09:52:48.283478" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:48.284709" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:48.625719" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:52:48 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:52:48.284354" elapsed="0.341562"/>
</kw>
<msg time="2026-04-07T09:52:48.626014" 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-07T09:52:48.283990" elapsed="0.342133"/>
</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-07T09:52:48.282497" elapsed="0.343755"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:48.626849" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-07T09:52:48.649889" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:52:48.650312" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:52:48.650410" 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-07T09:52:48.626528" elapsed="0.023935"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:48.651038" elapsed="0.001003"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:48.653157" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:48.652463" 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-07T09:52:48.653768" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:48.653431" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:48.653373" elapsed="0.000566"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:52:48.654382" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-07T09:52:48.654096" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:48.654052" elapsed="0.000534"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:48.654753" 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-07T09:52:48.660024" elapsed="0.000390"/>
</kw>
<kw name="Open 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-07T09:52:48.660577" elapsed="0.000210"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:48.660929" 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-07T09:52:48.655482" elapsed="0.005606"/>
</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-07T09:52:48.278518" elapsed="0.382663"/>
</kw>
<msg time="2026-04-07T09:52:48.661243" 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-07T09:52:48.277614" elapsed="0.383708"/>
</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-07T09:52:48.276938" elapsed="0.384467"/>
</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-07T09:52:48.663499" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:48.663218" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:48.663197" elapsed="0.000384"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:48.663892" 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-07T09:52:48.663999" 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-07T09:52:48.663746" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:48.664665" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.229" 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-07T09:52:48.664257" elapsed="0.000455"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:48.665231" level="INFO">${conn_id} = 23</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-07T09:52:48.664860" elapsed="0.000396"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:48.666110" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:48.666185" 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-07T09:52:48.665818" 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-07T09:52:48.666359" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:48.667548" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:49.044297" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:52:48 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:52:48.667220" elapsed="0.377261"/>
</kw>
<msg time="2026-04-07T09:52:49.044578" 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-07T09:52:48.666878" elapsed="0.377831"/>
</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-07T09:52:48.665465" elapsed="0.379373"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:49.045401" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-07T09:52:49.199240" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:52:49.199740" level="INFO">${stdout} =  * Exiting ovs-vswitchd (898)
 * Exiting ovsdb-server (853)</msg>
<msg time="2026-04-07T09:52:49.199855" 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-07T09:52:49.045108" elapsed="0.154804"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:49.200424" elapsed="0.000742"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:49.202338" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:49.201583" elapsed="0.000869"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:49.203000" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:49.202677" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:49.202587" 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-07T09:52:49.203544" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-07T09:52:49.203297" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:49.203262" elapsed="0.000528"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:49.203872" 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-07T09:52:49.210502" elapsed="0.000851"/>
</kw>
<kw name="Open 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-07T09:52:49.211517" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:49.211878" elapsed="0.000109"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:49.204618" elapsed="0.007421"/>
</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-07T09:52:48.662733" elapsed="0.549402"/>
</kw>
<msg time="2026-04-07T09:52:49.212288" 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-07T09:52:48.662088" elapsed="0.550291"/>
</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-07T09:52:48.661610" elapsed="0.550855"/>
</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-07T09:52:49.214596" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:49.214326" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:49.214306" elapsed="0.000405"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:49.215019" 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-07T09:52:49.215126" 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-07T09:52:49.214857" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:49.215735" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.229" 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-07T09:52:49.215293" elapsed="0.000497"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:49.216428" level="INFO">${conn_id} = 25</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-07T09:52:49.215989" elapsed="0.000465"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:49.217342" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:49.217420" 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-07T09:52:49.217039" 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-07T09:52:49.217602" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:49.218858" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:49.561857" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:52:48 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:52:49.218493" elapsed="0.343554"/>
</kw>
<msg time="2026-04-07T09:52:49.562146" 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-07T09:52:49.218121" elapsed="0.344134"/>
</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-07T09:52:49.216683" elapsed="0.345702"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:49.562963" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-07T09:52:49.585915" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:52:49.586212" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:52:49.586309" 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-07T09:52:49.562673" elapsed="0.023687"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:49.586819" elapsed="0.000592"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:49.588778" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:49.588028" elapsed="0.000845"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:49.589353" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:49.589053" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:49.588998" 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-07T09:52:49.589927" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-07T09:52:49.589684" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:49.589593" elapsed="0.000527"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:49.590193" 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-07T09:52:49.596481" elapsed="0.000414"/>
</kw>
<kw name="Open 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-07T09:52:49.597059" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:49.597401" elapsed="0.000117"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:49.590934" elapsed="0.006650"/>
</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-07T09:52:49.213784" elapsed="0.383921"/>
</kw>
<msg time="2026-04-07T09:52:49.597772" 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-07T09:52:49.213162" elapsed="0.384684"/>
</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-07T09:52:49.212692" elapsed="0.385237"/>
</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-07T09:52:49.600192" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:49.599889" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:49.599867" elapsed="0.000411"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:49.600574" 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-07T09:52:49.600707" 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-07T09:52:49.600425" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:49.601274" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.229" 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-07T09:52:49.600888" elapsed="0.000432"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:49.601853" level="INFO">${conn_id} = 27</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-07T09:52:49.601467" elapsed="0.000411"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:49.602726" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:49.602803" 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-07T09:52:49.602424" elapsed="0.000403"/>
</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-07T09:52:49.602976" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:49.604162" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:49.941221" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:52:49 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:52:49.603849" elapsed="0.337666"/>
</kw>
<msg time="2026-04-07T09:52:49.941708" 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-07T09:52:49.603473" elapsed="0.338398"/>
</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-07T09:52:49.602087" elapsed="0.339952"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:49.942748" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-07T09:52:50.046879" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:52:50.047302" 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-07T09:52:50.047567" level="INFO">${stderr} = 2026-04-07T09:52:49Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:52:50Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:52:50Z|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-07T09:52:49.942370" elapsed="0.105292"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:50.048210" elapsed="0.000782"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.050231" level="INFO">2026-04-07T09:52:49Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:52:50Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:52:50Z|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-07T09:52:50.049467" elapsed="0.000907"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:50.050963" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:50.050598" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:50.050524" 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-07T09:52:50.051510" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-07T09:52:50.051263" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:50.051229" elapsed="0.000523"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:50.051834" 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-07T09:52:50.055789" elapsed="0.000504"/>
</kw>
<kw name="Open 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-07T09:52:50.056513" elapsed="0.000245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:50.056949" elapsed="0.000169"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:50.052513" elapsed="0.004681"/>
</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-07T09:52:49.599310" elapsed="0.458011"/>
</kw>
<msg time="2026-04-07T09:52:50.057398" 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-07T09:52:49.598579" elapsed="0.458909"/>
</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-07T09:52:49.598131" elapsed="0.459465"/>
</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-07T09:52:45.888089" elapsed="4.169611"/>
</kw>
<for flavor="IN">
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:52:50.058517" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:52:50.058186" elapsed="0.001198">Non-existing index or alias 'session'.</status>
</kw>
<var name="${uri}">/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovscon_br1</var>
<status status="FAIL" start="2026-04-07T09:52:50.058007" elapsed="0.001480">Non-existing index or alias 'session'.</status>
</iter>
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:52:50.060186" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:52:50.059851" elapsed="0.000739">Non-existing index or alias 'session'.</status>
</kw>
<var name="${uri}">/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2Fuuid%2F%2Fbridge%2Fovscon_br2</var>
<status status="FAIL" start="2026-04-07T09:52:50.059651" elapsed="0.001058">Non-existing index or alias 'session'.</status>
</iter>
<var>${uri}</var>
<value>@{uris}</value>
<status status="FAIL" start="2026-04-07T09:52:50.057786" elapsed="0.003016">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.</status>
</for>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:52:50.061774" level="INFO">${resp} = None</msg>
<msg time="2026-04-07T09:52:50.061830" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:52:50.061410" elapsed="0.000821">Non-existing index or alias 'session'.</status>
</kw>
<kw name="Log Content" owner="Utils">
<msg time="2026-04-07T09:52:50.065343" level="FAIL">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</msg>
<arg>${resp.text}</arg>
<status status="FAIL" start="2026-04-07T09:52:50.062648" elapsed="0.002731">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:52:50.065787" level="INFO">${resp} = None</msg>
<msg time="2026-04-07T09:52:50.065826" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:52:50.065531" elapsed="0.000575">Non-existing index or alias 'session'.</status>
</kw>
<kw name="Log Content" owner="Utils">
<msg time="2026-04-07T09:52:50.068446" level="FAIL">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</msg>
<arg>${resp.text}</arg>
<status status="FAIL" start="2026-04-07T09:52:50.066377" elapsed="0.002145">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="FAIL" start="2026-04-07T09:52:50.061104" elapsed="0.007573">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

3) Non-existing index or alias 'session'.

4) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-07T09:52:50.068901" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-07T09:52:50.068826" elapsed="0.000166"/>
</kw>
<arg>${uris}</arg>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="FAIL" start="2026-04-07T09:52:45.887749" elapsed="4.181362">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Non-existing index or alias 'session'.

4) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

5) Non-existing index or alias 'session'.

6) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="FAIL" start="2026-04-07T09:52:45.886757" elapsed="4.182477">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Non-existing index or alias 'session'.

4) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

5) Non-existing index or alias 'session'.

6) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>Test suite for Connection Manager</doc>
<status status="FAIL" start="2026-04-07T09:52:41.655622" elapsed="8.413728">Suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169

Also suite teardown failed:
Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Non-existing index or alias 'session'.

4) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

5) Non-existing index or alias 'session'.

6) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</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-07T09:52:50.148222" 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-07T09:52:50.144314" elapsed="0.003964"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-07T09:52:50.144085" elapsed="0.004265"/>
</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-07T09:52:50.152881" 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-07T09:52:50.149426" elapsed="0.003483"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-07T09:52:50.153134" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:50.153000" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:50.152973" elapsed="0.000235"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.153723" 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-07T09:52:50.153357" elapsed="0.000409"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.154218" 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-07T09:52:50.153916" elapsed="0.000327"/>
</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-07T09:52:50.154744" elapsed="0.000293"/>
</kw>
<msg time="2026-04-07T09:52:50.155135" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:50.155180" 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-07T09:52:50.154398" elapsed="0.000804"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.155762" 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-07T09:52:50.155360" elapsed="0.000427"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.156742" 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-07T09:52:50.156465" elapsed="0.000303"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.157156" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-07T09:52:50.156904" elapsed="0.000278"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.157621" 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-07T09:52:50.157330" 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-07T09:52:50.160562" elapsed="0.000238"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.161268" level="INFO">${member_ip} = 10.30.170.169</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-07T09:52:50.160950" elapsed="0.000343"/>
</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-07T09:52:50.161433" elapsed="0.000254"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.162546" 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-07T09:52:50.162253" elapsed="0.000319"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-07T09:52:50.162616" elapsed="0.000058"/>
</return>
<msg time="2026-04-07T09:52:50.162798" 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-07T09:52:50.161968" elapsed="0.000854"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:52:50.163612" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.169:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7e7383f26c10&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-07T09:52:50.162973" elapsed="0.000830"/>
</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-07T09:52:50.163956" elapsed="0.000188"/>
</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-07T09:52:50.160026" elapsed="0.004177"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:52:50.159839" elapsed="0.004406"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-07T09:52:50.157725" elapsed="0.006552"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.164854" 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-07T09:52:50.164428" elapsed="0.000469"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.165437" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.169'}</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-07T09:52:50.165047" elapsed="0.000431"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.166017" 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-07T09:52:50.165641" elapsed="0.000417"/>
</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-07T09:52:50.156030" elapsed="0.010085"/>
</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-07T09:52:50.149099" elapsed="0.017069"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-07T09:52:50.166343" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:50.166232" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:50.166213" elapsed="0.000194"/>
</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-07T09:52:50.169348" 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-07T09:52:50.168976" elapsed="0.000398"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.169911" 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-07T09:52:50.169608" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-07T09:52:50.169980" elapsed="0.000029"/>
</return>
<msg time="2026-04-07T09:52:50.170132" 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-07T09:52:50.168661" elapsed="0.001494"/>
</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-07T09:52:50.171271" level="INFO">${member_ip} = 10.30.170.169</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-07T09:52:50.171014" elapsed="0.000313"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:50.172072" 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-07T09:52:50.172171" 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-07T09:52:50.171902" elapsed="0.000295"/>
</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-07T09:52:50.175589" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:50.174893" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:50.174869" elapsed="0.000878"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:50.176401" 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-07T09:52:50.176655" 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-07T09:52:50.175940" elapsed="0.000769"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.177648" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.169" 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-07T09:52:50.176964" elapsed="0.000789"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:50.178917" level="INFO">${conn_id} = 29</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-07T09:52:50.178013" elapsed="0.000954"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.180966" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:50.181140" 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-07T09:52:50.180375" elapsed="0.000807"/>
</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-07T09:52:50.181510" elapsed="0.000480"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:50.183100" level="INFO">Logging into '10.30.170.169:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:50.512173" 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  7 09:52:38 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.169
  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  7 09:52:42 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:52:50.182777" elapsed="0.329597"/>
</kw>
<msg time="2026-04-07T09:52:50.512468" 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-07T09:52:50.182328" elapsed="0.330367"/>
</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-07T09:52:50.179444" elapsed="0.333432"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:50.513881" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-07T09:52:50.528514" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-07T09:52:50.528952" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:52:50.529224" 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-07T09:52:50.513320" elapsed="0.016014"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:50.530051" elapsed="0.001180"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.533587" 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-07T09:52:50.532414" elapsed="0.001357"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:50.534403" elapsed="0.000078"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:50.534022" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:50.533979" elapsed="0.000734"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:52:50.535178" elapsed="0.000104"/>
</return>
<status status="PASS" start="2026-04-07T09:52:50.534850" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:50.534824" elapsed="0.000629"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:50.535536" 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-07T09:52:50.540026" elapsed="0.000680"/>
</kw>
<kw name="Open 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-07T09:52:50.541090" elapsed="0.000408"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:50.542074" elapsed="0.000322"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:50.536224" elapsed="0.006272"/>
</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-07T09:52:50.173936" elapsed="0.368838"/>
</kw>
<msg time="2026-04-07T09:52:50.542861" 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-07T09:52:50.173292" elapsed="0.369652"/>
</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-07T09:52:50.172834" elapsed="0.370229"/>
</kw>
<msg time="2026-04-07T09:52:50.543123" 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-07T09:52:50.172341" elapsed="0.370848"/>
</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-07T09:52:50.546472" elapsed="0.000327"/>
</kw>
<kw name="Open 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-07T09:52:50.546950" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:50.547232" 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-07T09:52:50.543605" elapsed="0.003771"/>
</kw>
<msg time="2026-04-07T09:52:50.547470" 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-07T09:52:50.171533" elapsed="0.375961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.547953" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:50.547704" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-07T09:52:50.548039" 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-07T09:52:50.170673" elapsed="0.377489"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:52:50.170338" elapsed="0.377861"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-07T09:52:50.170206" elapsed="0.378037"/>
</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-07T09:52:50.166617" elapsed="0.381687"/>
</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-07T09:52:50.548451" elapsed="0.000221"/>
</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-07T09:52:50.561903" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:50.561766" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:50.561739" elapsed="0.000245"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:50.562330" 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-07T09:52:50.562447" 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-07T09:52:50.562161" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.562919" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:50.562621" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:50.563335" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:50.563101" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:50.564155" 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-07T09:52:50.563916" elapsed="0.000358">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-07T09:52:50.564381" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:52:50.564424" 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-07T09:52:50.563526" elapsed="0.000920"/>
</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-07T09:52:50.564892" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:50.564522" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:50.564503" elapsed="0.000570"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:50.565837" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:50.565550" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:50.565908" elapsed="0.000033"/>
</return>
<msg time="2026-04-07T09:52:50.566063" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:50.565283" elapsed="0.000804"/>
</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-07T09:52:50.566232" elapsed="0.000440"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:50.566939" level="INFO">index=32
host=10.30.170.169
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-07T09:52:50.567039" level="INFO">${karaf_connection_object} = index=32
host=10.30.170.169
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-07T09:52:50.566831" elapsed="0.000234"/>
</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-07T09:52:50.567202" elapsed="0.002092"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:50.569877" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:50.571143" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:50.569496" elapsed="0.002285">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:50.576062" 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-07T09:52:50.576827" elapsed="0.000209"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:50.577228" elapsed="0.000449"/>
</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-07T09:52:50.572992" elapsed="0.004745"/>
</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-07T09:52:50.572177" elapsed="0.005606"/>
</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="FAIL" start="2026-04-07T09:52:50.561389" elapsed="0.016486">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:51.595153" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:51.595008" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:51.594981" elapsed="0.000262"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:51.595650" 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-07T09:52:51.595767" 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-07T09:52:51.595440" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:51.596246" level="INFO">{1: 32}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:51.595945" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:51.596693" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:51.596437" elapsed="0.000299"/>
</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-07T09:52:51.597263" elapsed="0.000180"/>
</kw>
<msg time="2026-04-07T09:52:51.597541" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:51.597586" level="INFO">${old_connection_index} = 32</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-07T09:52:51.596889" elapsed="0.000721"/>
</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-07T09:52:51.598419" elapsed="0.000159"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:52:51.599327" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:52:51.599149" elapsed="0.000710">Cannot open session, you need to establish a connection first.</status>
</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-07T09:52:51.598835" elapsed="0.001088"/>
</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-07T09:52:51.600394" elapsed="0.000098"/>
</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-07T09:52:51.600083" elapsed="0.000454"/>
</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-07T09:52:51.597914" elapsed="0.002667"/>
</kw>
<status status="PASS" start="2026-04-07T09:52:51.597701" elapsed="0.002946"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:51.597682" elapsed="0.002992"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:51.601397" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:51.601133" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:51.601471" elapsed="0.000033"/>
</return>
<msg time="2026-04-07T09:52:51.601638" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:51.600869" elapsed="0.000796"/>
</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-07T09:52:51.601811" elapsed="0.000399"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:51.602487" level="INFO">index=34
host=10.30.170.169
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-07T09:52:51.602588" level="INFO">${karaf_connection_object} = index=34
host=10.30.170.169
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-07T09:52:51.602369" elapsed="0.000245"/>
</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-07T09:52:51.602773" elapsed="0.002186"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:51.605368" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:51.606813" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:51.605112" elapsed="0.002072">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:51.609996" 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-07T09:52:51.610544" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:51.610853" elapsed="0.000095"/>
</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-07T09:52:51.607986" elapsed="0.003012"/>
</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-07T09:52:51.607455" elapsed="0.003586"/>
</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="FAIL" start="2026-04-07T09:52:51.594579" elapsed="0.016543">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:52.628715" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:52.628562" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:52.628536" elapsed="0.000263"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:52.629168" 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-07T09:52:52.629282" 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-07T09:52:52.628976" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:52.629760" level="INFO">{1: 34}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:52.629453" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:52.630265" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:52.630020" elapsed="0.000288"/>
</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-07T09:52:52.630854" elapsed="0.000187"/>
</kw>
<msg time="2026-04-07T09:52:52.631139" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:52.631185" level="INFO">${old_connection_index} = 34</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-07T09:52:52.630460" elapsed="0.000748"/>
</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-07T09:52:52.632013" elapsed="0.000135"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:52:52.632800" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:52:52.632613" elapsed="0.000724">Cannot open session, you need to establish a connection first.</status>
</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-07T09:52:52.632302" elapsed="0.001098"/>
</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-07T09:52:52.633889" elapsed="0.000098"/>
</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-07T09:52:52.633558" elapsed="0.000474"/>
</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-07T09:52:52.631496" elapsed="0.002580"/>
</kw>
<status status="PASS" start="2026-04-07T09:52:52.631284" elapsed="0.002841"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:52.631265" elapsed="0.002885"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:52.634885" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:52.634606" elapsed="0.000306"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:52.634963" elapsed="0.000034"/>
</return>
<msg time="2026-04-07T09:52:52.635118" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:52.634343" elapsed="0.000799"/>
</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-07T09:52:52.635298" elapsed="0.000417"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:52.635977" level="INFO">index=36
host=10.30.170.169
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-07T09:52:52.636075" level="INFO">${karaf_connection_object} = index=36
host=10.30.170.169
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-07T09:52:52.635873" elapsed="0.000228"/>
</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-07T09:52:52.636238" elapsed="0.002227"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:52.638889" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:52.640156" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:52.638617" elapsed="0.001914">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:52.643477" elapsed="0.000368"/>
</kw>
<kw name="Open 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-07T09:52:52.643997" elapsed="0.000141"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:52.644276" elapsed="0.000094"/>
</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-07T09:52:52.641357" elapsed="0.003064"/>
</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-07T09:52:52.640823" elapsed="0.003647"/>
</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="FAIL" start="2026-04-07T09:52:52.628187" elapsed="0.016363">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:53.665238" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:53.664853" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:53.664810" elapsed="0.000563"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.665916" 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-07T09:52:53.666075" 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-07T09:52:53.665606" elapsed="0.000498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:53.666697" level="INFO">{1: 36}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:53.666264" elapsed="0.000481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:53.667174" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:53.666904" elapsed="0.000315"/>
</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-07T09:52:53.667879" elapsed="0.000208"/>
</kw>
<msg time="2026-04-07T09:52:53.668248" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:53.668296" level="INFO">${old_connection_index} = 36</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-07T09:52:53.667399" elapsed="0.000921"/>
</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-07T09:52:53.669280" elapsed="0.000161"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.670202" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:52:53.669964" elapsed="0.000930">Cannot open session, you need to establish a connection first.</status>
</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-07T09:52:53.669602" elapsed="0.001365"/>
</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-07T09:52:53.671469" elapsed="0.000124"/>
</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-07T09:52:53.671129" elapsed="0.000532"/>
</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-07T09:52:53.668667" elapsed="0.003053"/>
</kw>
<status status="PASS" start="2026-04-07T09:52:53.668412" elapsed="0.003370"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:53.668391" elapsed="0.003419"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:53.672656" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:53.672358" elapsed="0.000330"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:53.672737" elapsed="0.000041"/>
</return>
<msg time="2026-04-07T09:52:53.672927" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:53.672036" elapsed="0.000919"/>
</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-07T09:52:53.673131" elapsed="0.000445"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.673872" level="INFO">index=38
host=10.30.170.169
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-07T09:52:53.673990" level="INFO">${karaf_connection_object} = index=38
host=10.30.170.169
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-07T09:52:53.673760" elapsed="0.000264"/>
</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-07T09:52:53.674176" elapsed="0.002434"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.677071" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:53.678668" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:53.676795" elapsed="0.002299">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:53.682250" elapsed="0.000430"/>
</kw>
<kw name="Open 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-07T09:52:53.682840" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:53.683159" elapsed="0.000102"/>
</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-07T09:52:53.679994" elapsed="0.003366"/>
</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-07T09:52:53.679414" elapsed="0.003992"/>
</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="FAIL" start="2026-04-07T09:52:53.664178" elapsed="0.019315">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<msg time="2026-04-07T09:52:53.683592" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</msg>
<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="FAIL" start="2026-04-07T09:52:50.549436" elapsed="3.134281">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:50.549071" elapsed="3.134717"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:52:50.548938" elapsed="3.134903"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-07T09:52:50.548744" elapsed="3.135146"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-07T09:52:50.148667" elapsed="3.535292"/>
</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-07T09:52:53.687341" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:53.687217" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:53.687195" 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-07T09:52:53.692097" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:53.691968" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:53.691950" elapsed="0.000251"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:52:53.693388" 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-07T09:52:53.692925" elapsed="0.000492"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:52:53.693964" 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-07T09:52:53.693584" elapsed="0.000407"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-07T09:52:53.694036" elapsed="0.000036"/>
</return>
<msg time="2026-04-07T09:52:53.694220" 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-07T09:52:53.692555" elapsed="0.001697"/>
</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-07T09:52:53.699764" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:53.699650" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:53.699614" 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-07T09:52:53.701164" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:53.701034" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:53.701015" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:53.701719" level="INFO">${karaf_connection_index} = 38</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-07T09:52:53.701372" elapsed="0.000374"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.702135" 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-07T09:52:53.701904" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.703267" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:52:53.702812" elapsed="0.001257">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-07T09:52:53.704212" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-07T09:52:53.704257" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</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-07T09:52:53.702307" elapsed="0.001973"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.705362" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-07T09:52:53.704957" elapsed="0.001206">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-07T09:52:53.706370" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-07T09:52:53.706416" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</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-07T09:52:53.704442" elapsed="0.001998"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-07T09:52:53.707446" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-07T09:52:53.706773" elapsed="0.000757">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot"</status>
</kw>
<status status="FAIL" start="2026-04-07T09:52:53.706517" elapsed="0.001172">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot"</status>
</branch>
<status status="FAIL" start="2026-04-07T09:52:53.706497" elapsed="0.001229">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-07T09:52:53.707883" elapsed="0.000022"/>
</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-07T09:52:53.708186" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:53.708046" elapsed="0.000296"/>
</branch>
<status status="NOT RUN" start="2026-04-07T09:52:53.708023" elapsed="0.000345"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-07T09:52:53.708401" elapsed="0.000017"/>
</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-07T09:52:53.710374" elapsed="0.000470"/>
</kw>
<kw name="Open 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-07T09:52:53.711178" elapsed="0.000311"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:53.711825" elapsed="0.000272"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:53.709583" elapsed="0.002603"/>
</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-07T09:52:53.708696" elapsed="0.003649"/>
</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="FAIL" start="2026-04-07T09:52:53.700743" elapsed="0.011726">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot"</status>
</kw>
<msg time="2026-04-07T09:52:53.712610" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:52:53.712702" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_nod...</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-07T09:52:53.700036" elapsed="0.012700"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-07T09:52:53.712993" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:53.712845" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:53.712817" elapsed="0.000265"/>
</if>
<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-07T09:52:53.714253" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:53.714106" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:53.714081" elapsed="0.000272"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.714992" 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-07T09:52:53.715137" 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-07T09:52:53.714554" elapsed="0.000620"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:53.715750" level="INFO">{1: 38}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:53.715370" elapsed="0.000441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:53.716364" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:53.716029" elapsed="0.000393"/>
</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-07T09:52:53.717125" elapsed="0.000381"/>
</kw>
<msg time="2026-04-07T09:52:53.717790" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:53.717859" level="INFO">${old_connection_index} = 38</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-07T09:52:53.716643" elapsed="0.001247"/>
</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-07T09:52:53.719447" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.722521" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:52:53.721961" elapsed="0.001550">Cannot open session, you need to establish a connection first.</status>
</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-07T09:52:53.720157" elapsed="0.003582"/>
</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-07T09:52:53.724975" elapsed="0.000191"/>
</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-07T09:52:53.724269" elapsed="0.000970"/>
</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-07T09:52:53.718345" elapsed="0.006977"/>
</kw>
<status status="PASS" start="2026-04-07T09:52:53.718048" elapsed="0.007324"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:53.718019" elapsed="0.007378"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:53.726372" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:53.725880" elapsed="0.000520"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:53.726447" elapsed="0.000032"/>
</return>
<msg time="2026-04-07T09:52:53.726600" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:53.725591" elapsed="0.001033"/>
</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-07T09:52:53.726788" elapsed="0.000412"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.727467" level="INFO">index=41
host=10.30.170.169
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-07T09:52:53.727564" level="INFO">${karaf_connection_object} = index=41
host=10.30.170.169
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-07T09:52:53.727361" elapsed="0.000229"/>
</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-07T09:52:53.727743" elapsed="0.002192"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.730345" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:53.731745" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:53.730088" elapsed="0.002045">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:53.735306" elapsed="0.000679"/>
</kw>
<kw name="Open 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-07T09:52:53.736215" elapsed="0.000394"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:53.736823" elapsed="0.000175"/>
</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-07T09:52:53.732914" elapsed="0.004165"/>
</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-07T09:52:53.732399" elapsed="0.004725"/>
</kw>
<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="FAIL" start="2026-04-07T09:52:53.713618" elapsed="0.023588">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:53.737534" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-07T09:52:53.737604" 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="FAIL" start="2026-04-07T09:52:53.699335" elapsed="0.038397">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<msg time="2026-04-07T09:52:53.737838" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:52:53.737881" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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-07T09:52:53.694720" elapsed="0.043226"/>
</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-07T09:52:53.738272" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:53.738028" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:53.738009" elapsed="0.000340"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:52:53.694542" elapsed="0.043830"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-07T09:52:53.694329" elapsed="0.044076"/>
</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-07T09:52:53.691656" elapsed="0.046808"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-07T09:52:53.685297" elapsed="0.053223"/>
</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-07T09:52:53.684154" elapsed="0.054408"/>
</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-07T09:52:50.143773" elapsed="3.594840"/>
</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-07T09:52:53.751456" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:53.751349" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:53.751331" elapsed="0.000194"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.751827" 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-07T09:52:53.751929" 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-07T09:52:53.751685" elapsed="0.000270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:53.752348" level="INFO">{1: 41}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:53.752095" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:53.752796" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:53.752531" elapsed="0.000308"/>
</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-07T09:52:53.753324" elapsed="0.000175"/>
</kw>
<msg time="2026-04-07T09:52:53.753593" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:53.753656" level="INFO">${old_connection_index} = 41</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-07T09:52:53.752983" elapsed="0.000697"/>
</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-07T09:52:53.754459" elapsed="0.000131"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.755220" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:52:53.755073" elapsed="0.000590">Cannot open session, you need to establish a connection first.</status>
</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-07T09:52:53.754766" elapsed="0.000972"/>
</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-07T09:52:53.756201" elapsed="0.000097"/>
</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-07T09:52:53.755894" elapsed="0.000448"/>
</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-07T09:52:53.753971" elapsed="0.002420"/>
</kw>
<status status="PASS" start="2026-04-07T09:52:53.753756" elapsed="0.002683"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:53.753737" elapsed="0.002728"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:53.757206" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:53.756940" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:53.757279" elapsed="0.000030"/>
</return>
<msg time="2026-04-07T09:52:53.757428" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:53.756670" elapsed="0.000781"/>
</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-07T09:52:53.757599" elapsed="0.000405"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.758264" level="INFO">index=43
host=10.30.170.169
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-07T09:52:53.758410" level="INFO">${karaf_connection_object} = index=43
host=10.30.170.169
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-07T09:52:53.758161" elapsed="0.000275"/>
</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-07T09:52:53.758574" elapsed="0.002290"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.761266" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:53.762198" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:53.761016" elapsed="0.001547">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:53.765354" elapsed="0.000313"/>
</kw>
<kw name="Open 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-07T09:52:53.765817" elapsed="0.000138"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:53.766105" elapsed="0.000093"/>
</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-07T09:52:53.763334" elapsed="0.002919"/>
</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-07T09:52:53.762842" elapsed="0.003456"/>
</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="FAIL" start="2026-04-07T09:52:53.749786" elapsed="0.016586">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<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="NOT RUN" start="2026-04-07T09:52:53.766524" elapsed="0.000021"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="NOT RUN" start="2026-04-07T09:52:53.766777" elapsed="0.000024"/>
</kw>
<status status="FAIL" start="2026-04-07T09:52:50.143324" elapsed="3.623559">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<test id="s1-s2-t1" name="Create a Topology in OVSDB node" line="26">
<doc>Create topology in OVSDB and ready it for further tests</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.766993" elapsed="0.002315">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t2" name="Connect to OVSDB Node" line="35">
<doc>Initiate the connection to OVSDB node from controller</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.769550" elapsed="0.000401">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t3" name="Get Operational Topology" line="39">
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.770114" elapsed="0.000401">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t4" name="Verify Bridge Port Not In Config DS" line="50">
<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="FAIL" start="2026-04-07T09:52:53.772909" elapsed="0.000527">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t5" name="Create bridge of already added bridge" line="61">
<doc>This will add bridge to the config datastore</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.773611" elapsed="0.000376">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t6" name="Get Config Topology with Bridge" line="69">
<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="FAIL" start="2026-04-07T09:52:53.774149" elapsed="0.000460">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t7" name="Create Port of already added port in OVSDB" line="80">
<doc>This will add port/interface to the config datastore</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.776329" elapsed="0.000426">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t8" name="Get Config Topology with Bridge and Port" line="84">
<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="FAIL" start="2026-04-07T09:52:53.776918" elapsed="0.000477">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t9" name="Modify the destination IP of Port" line="94">
<doc>This will modify the dst ip of existing port</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.777555" elapsed="0.002896">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t10" name="Get Operational Topology with modified Port" line="98">
<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-07T09:52:53.780682" elapsed="0.000481">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t11" name="Create Port and attach to a Bridge" line="110">
<doc>This request will creates port/interface and attach it to the specific bridge</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.781326" elapsed="0.002895">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t12" name="Get Operational Topology with Port" line="114">
<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-07T09:52:53.784569" elapsed="0.000474">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t13" name="Delete the Port1" line="126">
<doc>This request will delete the port node from the bridge node and data store.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.785207" elapsed="0.000365">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t14" name="Get Operational Topology after deletion of Port1" line="133">
<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-07T09:52:53.785834" elapsed="0.000698">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t15" name="Delete the Port2" line="144">
<doc>This request will delete the port node from the bridge node and data store.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.786940" elapsed="0.000567">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t16" name="Get Operational Topology after Deletion of Port2" line="151">
<doc>This request will fetch the operational topology after the Port is deleted</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.788026" elapsed="0.000573">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t17" name="Delete the Bridge" line="162">
<doc>This request will delete the bridge node from the config data store.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.789056" elapsed="0.000450">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t18" name="Get Operational Topology after Deletion of Bridge" line="169">
<doc>This request will fetch the operational topology after the Bridge is deleted</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.789898" elapsed="0.000531">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t19" name="Delete the OVSDB Node" line="180">
<doc>This request will delete the OVSDB node</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.790820" elapsed="0.000409">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t20" name="Get Operational Topology after Deletion of OVSDB Node" line="187">
<doc>This request will fetch the operational topology after the OVSDB node is deleted</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:52:53.791640" elapsed="0.000547">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t21" name="Check For Bug 4756" line="202">
<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="FAIL" start="2026-04-07T09:52:53.792358" elapsed="0.000444">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s2-t22" name="Check For Bug 4794" line="210">
<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="FAIL" start="2026-04-07T09:52:53.792961" elapsed="0.000436">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<kw name="Suite Teardown" type="TEARDOWN">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:52:53.802291" level="INFO">@{uris} = [ /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.229%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-07T09:52:53.795058" elapsed="0.007328"/>
</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-07T09:52:53.809114" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:53.808797" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:53.808770" elapsed="0.000430"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.809518" 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-07T09:52:53.809621" 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-07T09:52:53.809343" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:53.810208" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.229" 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-07T09:52:53.809806" elapsed="0.000448"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.810790" 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-07T09:52:53.810399" elapsed="0.000417"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:53.811681" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:53.811757" 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-07T09:52:53.811352" 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-07T09:52:53.811928" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:53.813234" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:54.134425" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:52:49 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:52:53.812831" elapsed="0.321767"/>
</kw>
<msg time="2026-04-07T09:52:54.134711" 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-07T09:52:53.812475" elapsed="0.322336"/>
</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-07T09:52:53.811021" elapsed="0.323908"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:54.135428" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-07T09:52:55.342503" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:52:55.342937" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:52:55.343039" 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-07T09:52:54.135172" elapsed="1.207925"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:55.343566" elapsed="0.000700"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:55.345335" 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-07T09:52:55.344695" elapsed="0.000789"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:55.345994" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:55.345690" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:55.345607" 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-07T09:52:55.346503" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-07T09:52:55.346272" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:55.346238" elapsed="0.000499"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:55.346812" 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-07T09:52:55.351852" elapsed="0.000452"/>
</kw>
<kw name="Open 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-07T09:52:55.352521" elapsed="0.000246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:55.352959" elapsed="0.000132"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:55.347495" elapsed="0.005668"/>
</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-07T09:52:53.807836" elapsed="1.545453"/>
</kw>
<msg time="2026-04-07T09:52:55.353386" 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-07T09:52:53.806408" elapsed="1.547084"/>
</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-07T09:52:53.805428" elapsed="1.548173"/>
</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-07T09:52:55.356397" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:55.355963" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:55.355936" elapsed="0.000575"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:55.356919" 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-07T09:52:55.357061" 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-07T09:52:55.356728" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:55.357854" 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.229" 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-07T09:52:55.357291" elapsed="0.000626"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:55.358620" 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-07T09:52:55.358118" elapsed="0.000559"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:55.359828" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:55.359934" 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-07T09:52:55.359426" 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-07T09:52:55.360169" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:55.361997" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:55.725450" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:52:54 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:52:55.361384" elapsed="0.364482"/>
</kw>
<msg time="2026-04-07T09:52:55.726150" 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-07T09:52:55.360859" elapsed="0.365502"/>
</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-07T09:52:55.358967" elapsed="0.367625"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:55.727826" 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-07T09:52:55.761461" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-07T09:52:55.761993" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:52:55.762099" 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-07T09:52:55.727180" elapsed="0.034974"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:55.762850" elapsed="0.000831"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:55.765066" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:55.764252" elapsed="0.000908"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:55.765819" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:55.765389" elapsed="0.000553"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:55.765311" elapsed="0.000682"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:52:55.766390" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-07T09:52:55.766144" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:55.766109" elapsed="0.000492"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:55.766751" elapsed="0.000045"/>
</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-07T09:52:55.773324" 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="PASS" start="2026-04-07T09:52:55.774546" elapsed="0.000419"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:55.775298" elapsed="0.000244"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:55.767551" elapsed="0.008166"/>
</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-07T09:52:55.355277" elapsed="0.420951"/>
</kw>
<msg time="2026-04-07T09:52:55.776348" 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-07T09:52:55.354466" elapsed="0.421964"/>
</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-07T09:52:55.353855" elapsed="0.422666"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-07T09:52:53.804777" elapsed="1.971896"/>
</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-07T09:52:55.778824" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:55.778535" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:55.778516" elapsed="0.000392"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:55.779289" 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-07T09:52:55.779457" 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-07T09:52:55.779061" elapsed="0.000425"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:55.780064" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.229" 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-07T09:52:55.779651" elapsed="0.000461"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:55.780649" 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-07T09:52:55.780260" elapsed="0.000417"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:55.781536" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:55.781615" 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-07T09:52:55.781234" elapsed="0.000421"/>
</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-07T09:52:55.781806" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:55.783046" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:56.087449" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:52:55 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:52:55.782725" elapsed="0.304970"/>
</kw>
<msg time="2026-04-07T09:52:56.087801" 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-07T09:52:55.782360" elapsed="0.305563"/>
</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-07T09:52:55.780891" elapsed="0.307177"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:56.088782" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-07T09:52:56.111380" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:52:56.111709" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:52:56.111833" 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-07T09:52:56.088393" elapsed="0.023508"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:56.112332" elapsed="0.000647"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:56.114136" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:56.113427" 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-07T09:52:56.115015" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:56.114583" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:56.114519" elapsed="0.000670"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:52:56.115551" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-07T09:52:56.115311" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:56.115275" elapsed="0.000502"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:56.115851" 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-07T09:52:56.121854" elapsed="0.000726"/>
</kw>
<kw name="Open 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-07T09:52:56.123061" elapsed="0.000379"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:56.123795" elapsed="0.000220"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:56.116582" elapsed="0.007549"/>
</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-07T09:52:55.778006" elapsed="0.346335"/>
</kw>
<msg time="2026-04-07T09:52:56.124461" 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-07T09:52:55.777351" elapsed="0.347248"/>
</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-07T09:52:55.776878" elapsed="0.347930"/>
</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-07T09:52:56.128238" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:56.127957" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:56.127937" elapsed="0.000383"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:56.128621" 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-07T09:52:56.128742" 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-07T09:52:56.128462" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:56.129286" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.229" 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-07T09:52:56.128910" elapsed="0.000422"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:56.129878" 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-07T09:52:56.129480" elapsed="0.000424"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:56.130789" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:56.130866" 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-07T09:52:56.130447" elapsed="0.000442"/>
</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-07T09:52:56.131035" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:56.132192" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:56.438172" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:52:56 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:52:56.131878" elapsed="0.306557"/>
</kw>
<msg time="2026-04-07T09:52:56.438551" 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-07T09:52:56.131510" elapsed="0.307366"/>
</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-07T09:52:56.130112" elapsed="0.308931"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:56.439811" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-07T09:52:56.705394" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:52:56.706025" level="INFO">${stdout} =  * Exiting ovs-vswitchd (2374)
 * Exiting ovsdb-server (2357)</msg>
<msg time="2026-04-07T09:52:56.706140" 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-07T09:52:56.439398" elapsed="0.266805"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:56.706890" elapsed="0.000932"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:56.709256" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:56.708323" elapsed="0.001036"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:56.709992" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:56.709590" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:56.709503" elapsed="0.000669"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:52:56.710571" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-07T09:52:56.710328" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:56.710282" elapsed="0.000559"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:56.710918" 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-07T09:52:56.715203" 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-07T09:52:56.715745" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:56.716128" 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-07T09:52:56.711748" elapsed="0.004550"/>
</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-07T09:52:56.127455" elapsed="0.588947"/>
</kw>
<msg time="2026-04-07T09:52:56.716465" 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-07T09:52:56.126260" elapsed="0.590282"/>
</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-07T09:52:56.125231" elapsed="0.591392"/>
</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-07T09:52:56.718825" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:56.718530" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:56.718510" elapsed="0.000397"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:56.719231" 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-07T09:52:56.719363" 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-07T09:52:56.719054" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:56.719942" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.229" 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-07T09:52:56.719531" elapsed="0.000463"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:56.720545" 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-07T09:52:56.720142" elapsed="0.000428"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:56.721485" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:56.721571" 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-07T09:52:56.721165" 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-07T09:52:56.721755" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:56.723070" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:57.058530" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:52:56 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:52:56.722747" elapsed="0.336135"/>
</kw>
<msg time="2026-04-07T09:52:57.059073" 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-07T09:52:56.722363" elapsed="0.336901"/>
</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-07T09:52:56.720825" elapsed="0.338702"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:57.060574" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-07T09:52:57.073692" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:52:57.073950" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:52:57.074043" 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-07T09:52:57.060098" elapsed="0.013996"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:57.074441" elapsed="0.000800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.076377" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:57.075735" 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-07T09:52:57.076997" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:57.076696" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:57.076595" 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-07T09:52:57.077500" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-07T09:52:57.077273" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:57.077242" elapsed="0.000473"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:57.077787" 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-07T09:52:57.084083" elapsed="0.000605"/>
</kw>
<kw name="Open 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-07T09:52:57.084846" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:57.085156" elapsed="0.000093"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:57.078463" elapsed="0.006838"/>
</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-07T09:52:56.718019" elapsed="0.367373"/>
</kw>
<msg time="2026-04-07T09:52:57.085446" 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-07T09:52:56.717352" elapsed="0.368157"/>
</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-07T09:52:56.716858" elapsed="0.368737"/>
</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-07T09:52:57.087670" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:57.087380" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:57.087361" elapsed="0.000396"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:57.088049" 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-07T09:52:57.088152" 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-07T09:52:57.087901" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.088784" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.229" 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-07T09:52:57.088385" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:57.089342" 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-07T09:52:57.088980" elapsed="0.000387"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.090210" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:57.090284" 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-07T09:52:57.089929" 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-07T09:52:57.090453" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:57.091894" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:57.419452" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:52:56 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:52:57.091506" elapsed="0.328249"/>
</kw>
<msg time="2026-04-07T09:52:57.419863" 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-07T09:52:57.090945" elapsed="0.329052"/>
</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-07T09:52:57.089580" elapsed="0.330571"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:57.420846" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-07T09:52:57.524072" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:52:57.524463" 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-07T09:52:57.524563" level="INFO">${stderr} = 2026-04-07T09:52:57Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:52:57Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:52:57Z|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-07T09:52:57.420442" elapsed="0.104177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:57.525150" elapsed="0.000605"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.527050" level="INFO">2026-04-07T09:52:57Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:52:57Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:52:57Z|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-07T09:52:57.526207" elapsed="0.000945"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:57.527755" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:57.527359" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:57.527292" elapsed="0.000639"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:52:57.528289" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-07T09:52:57.528050" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:57.528017" elapsed="0.000475"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:57.528568" elapsed="0.000083"/>
</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-07T09:52:57.534650" elapsed="0.000759"/>
</kw>
<kw name="Open 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-07T09:52:57.535788" elapsed="0.000372"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:57.536465" elapsed="0.000252"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:57.529376" elapsed="0.007462"/>
</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-07T09:52:57.086909" elapsed="0.450130"/>
</kw>
<msg time="2026-04-07T09:52:57.537316" 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-07T09:52:57.086312" elapsed="0.451150"/>
</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-07T09:52:57.085840" elapsed="0.451827"/>
</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-07T09:52:53.804004" elapsed="3.733797"/>
</kw>
<for flavor="IN">
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:52:57.539167" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:52:57.538582" elapsed="0.001219">Non-existing index or alias 'session'.</status>
</kw>
<var name="${uri}">/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.229%3A6634</var>
<status status="FAIL" start="2026-04-07T09:52:57.538251" elapsed="0.001637">Non-existing index or alias 'session'.</status>
</iter>
<var>${uri}</var>
<value>@{uris}</value>
<status status="FAIL" start="2026-04-07T09:52:57.537928" elapsed="0.002026">Non-existing index or alias 'session'.</status>
</for>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:52:57.540658" level="INFO">${resp} = None</msg>
<msg time="2026-04-07T09:52:57.540701" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:52:57.540396" elapsed="0.000589">Non-existing index or alias 'session'.</status>
</kw>
<kw name="Log Content" owner="Utils">
<msg time="2026-04-07T09:52:57.543619" level="FAIL">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</msg>
<arg>${resp.text}</arg>
<status status="FAIL" start="2026-04-07T09:52:57.541292" elapsed="0.002378">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:52:57.544065" level="INFO">${resp} = None</msg>
<msg time="2026-04-07T09:52:57.544105" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:52:57.543824" elapsed="0.000562">Non-existing index or alias 'session'.</status>
</kw>
<kw name="Log Content" owner="Utils">
<msg time="2026-04-07T09:52:57.546674" level="FAIL">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</msg>
<arg>${resp.text}</arg>
<status status="FAIL" start="2026-04-07T09:52:57.544688" elapsed="0.002019">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="FAIL" start="2026-04-07T09:52:57.540176" elapsed="0.006666">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

3) Non-existing index or alias 'session'.

4) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-07T09:52:57.547101" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-07T09:52:57.547016" elapsed="0.000196"/>
</kw>
<arg>${uris}</arg>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="FAIL" start="2026-04-07T09:52:53.803102" elapsed="3.744228">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

4) Non-existing index or alias 'session'.

5) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="FAIL" start="2026-04-07T09:52:53.794660" elapsed="3.752792">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

4) Non-existing index or alias 'session'.

5) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>Test suite for Connection Manager</doc>
<status status="FAIL" start="2026-04-07T09:52:50.070273" elapsed="7.477325">Suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169

Also suite teardown failed:
Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

4) Non-existing index or alias 'session'.

5) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</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-07T09:52:57.653556" 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-07T09:52:57.649526" elapsed="0.004096"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-07T09:52:57.649278" elapsed="0.004441"/>
</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-07T09:52:57.658597" 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-07T09:52:57.654916" elapsed="0.003728"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-07T09:52:57.658930" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:57.658758" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:57.658722" elapsed="0.000292"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.659579" 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-07T09:52:57.659189" elapsed="0.000564"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.660284" 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-07T09:52:57.659939" elapsed="0.000374"/>
</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-07T09:52:57.660933" elapsed="0.000337"/>
</kw>
<msg time="2026-04-07T09:52:57.661382" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:57.661432" 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-07T09:52:57.660508" elapsed="0.000949"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.662128" 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-07T09:52:57.661664" elapsed="0.000497"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.663232" 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-07T09:52:57.662963" elapsed="0.000297"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.663676" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-07T09:52:57.663404" elapsed="0.000300"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.664163" 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-07T09:52:57.663860" elapsed="0.000330"/>
</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-07T09:52:57.667195" elapsed="0.000251"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.667950" level="INFO">${member_ip} = 10.30.170.169</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-07T09:52:57.667606" elapsed="0.000371"/>
</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-07T09:52:57.668127" elapsed="0.000244"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.669168" 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-07T09:52:57.668869" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-07T09:52:57.669252" elapsed="0.000054"/>
</return>
<msg time="2026-04-07T09:52:57.669434" 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-07T09:52:57.668563" elapsed="0.000897"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:52:57.727164" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.169:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7e7389263710&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-07T09:52:57.669618" elapsed="0.057778"/>
</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-07T09:52:57.727680" elapsed="0.000248"/>
</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-07T09:52:57.666609" elapsed="0.061392"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:52:57.666411" elapsed="0.061639"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-07T09:52:57.664259" elapsed="0.063832"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.728778" 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-07T09:52:57.728263" elapsed="0.000559"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.729379" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.169'}</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-07T09:52:57.728977" elapsed="0.000447"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.729992" 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-07T09:52:57.729578" elapsed="0.000459"/>
</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-07T09:52:57.662489" elapsed="0.067605"/>
</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-07T09:52:57.654516" elapsed="0.075634"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-07T09:52:57.730405" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:57.730235" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:57.730208" elapsed="0.000399"/>
</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-07T09:52:57.733725" 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-07T09:52:57.733313" elapsed="0.000439"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.734206" 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-07T09:52:57.733915" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-07T09:52:57.734276" elapsed="0.000041"/>
</return>
<msg time="2026-04-07T09:52:57.734442" 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-07T09:52:57.732990" elapsed="0.001476"/>
</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-07T09:52:57.735457" level="INFO">${member_ip} = 10.30.170.169</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-07T09:52:57.735192" elapsed="0.000291"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:57.736232" 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-07T09:52:57.736335" 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-07T09:52:57.736050" elapsed="0.000310"/>
</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-07T09:52:57.739854" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:57.739257" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:57.739122" elapsed="0.000854"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:57.740605" 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-07T09:52:57.740857" 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-07T09:52:57.740165" elapsed="0.000745"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.741860" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.169" 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-07T09:52:57.741169" elapsed="0.000795"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:57.743137" level="INFO">${conn_id} = 57</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-07T09:52:57.742224" elapsed="0.000966"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:52:57.744888" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:52:57.745066" 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-07T09:52:57.744510" elapsed="0.000597"/>
</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-07T09:52:57.745436" elapsed="0.000482"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:52:57.747018" level="INFO">Logging into '10.30.170.169:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:52:58.077893" 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  7 09:52:38 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.169
  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  7 09:52:50 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:52:57.746697" elapsed="0.331415"/>
</kw>
<msg time="2026-04-07T09:52:58.078216" 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-07T09:52:57.746256" elapsed="0.332185"/>
</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-07T09:52:57.743658" elapsed="0.335093"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:52:58.079761" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-07T09:52:58.092771" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-07T09:52:58.093055" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:52:58.093199" 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-07T09:52:58.079170" elapsed="0.014097"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:58.093721" elapsed="0.000712"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:58.096206" 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-07T09:52:58.095328" elapsed="0.001025"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:58.097143" elapsed="0.000081"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:58.096615" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:58.096568" elapsed="0.000824"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:52:58.097878" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-07T09:52:58.097505" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:58.097482" elapsed="0.000660"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:52:58.098224" 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-07T09:52:58.103309" elapsed="0.000792"/>
</kw>
<kw name="Open 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-07T09:52:58.104503" elapsed="0.000464"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:58.105333" elapsed="0.000340"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:58.098992" elapsed="0.006779"/>
</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-07T09:52:57.738173" elapsed="0.367838"/>
</kw>
<msg time="2026-04-07T09:52:58.106092" 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-07T09:52:57.737476" elapsed="0.368690"/>
</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-07T09:52:57.737015" elapsed="0.369287"/>
</kw>
<msg time="2026-04-07T09:52:58.106361" 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-07T09:52:57.736509" elapsed="0.369915"/>
</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-07T09:52:58.110121" elapsed="0.000434"/>
</kw>
<kw name="Open 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-07T09:52:58.110823" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:58.111245" elapsed="0.000136"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:52:58.106864" elapsed="0.004590"/>
</kw>
<msg time="2026-04-07T09:52:58.111579" 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-07T09:52:57.735703" elapsed="0.375910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:58.112536" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:58.112174" elapsed="0.000419"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-07T09:52:58.112671" elapsed="0.000042"/>
</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-07T09:52:57.734849" elapsed="0.378031"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:52:57.734679" elapsed="0.378256"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-07T09:52:57.734523" elapsed="0.378469"/>
</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-07T09:52:57.730875" elapsed="0.382215"/>
</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-07T09:52:58.113384" elapsed="0.000214"/>
</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-07T09:52:58.126709" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:58.126579" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:58.126558" elapsed="0.000220"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:58.127095" 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-07T09:52:58.127201" 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-07T09:52:58.126938" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:58.127641" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:58.127371" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:58.128069" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:58.127831" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:58.128930" 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-07T09:52:58.128662" elapsed="0.000413">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-07T09:52:58.129185" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:52:58.129230" 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-07T09:52:58.128290" elapsed="0.000962"/>
</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-07T09:52:58.129569" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:52:58.129328" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:58.129309" elapsed="0.000378"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:58.130415" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:58.130150" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:58.130488" elapsed="0.000028"/>
</return>
<msg time="2026-04-07T09:52:58.130651" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:58.129885" elapsed="0.000792"/>
</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-07T09:52:58.130827" elapsed="0.000414"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:58.131518" level="INFO">index=60
host=10.30.170.169
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-07T09:52:58.131616" level="INFO">${karaf_connection_object} = index=60
host=10.30.170.169
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-07T09:52:58.131407" elapsed="0.000250"/>
</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-07T09:52:58.131801" elapsed="0.002384"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:58.134609" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:58.135586" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:58.134346" elapsed="0.001793">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:58.139321" elapsed="0.000370"/>
</kw>
<kw name="Open 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-07T09:52:58.139849" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:58.140175" elapsed="0.000098"/>
</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-07T09:52:58.137163" elapsed="0.003161"/>
</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-07T09:52:58.136432" elapsed="0.003966"/>
</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="FAIL" start="2026-04-07T09:52:58.126281" elapsed="0.014259">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:59.158360" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:52:59.158141" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:59.158106" elapsed="0.000371"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:59.158999" 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-07T09:52:59.159142" 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-07T09:52:59.158733" elapsed="0.000436"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:59.159723" level="INFO">{1: 60}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:59.159333" elapsed="0.000436"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:52:59.160162" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:52:59.159916" 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-07T09:52:59.160822" elapsed="0.000194"/>
</kw>
<msg time="2026-04-07T09:52:59.161121" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:52:59.161166" level="INFO">${old_connection_index} = 60</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-07T09:52:59.160371" elapsed="0.000819"/>
</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-07T09:52:59.162044" elapsed="0.000165"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:52:59.162938" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:52:59.162720" elapsed="0.000883">Cannot open session, you need to establish a connection first.</status>
</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-07T09:52:59.162370" elapsed="0.001316"/>
</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-07T09:52:59.164172" elapsed="0.000105"/>
</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-07T09:52:59.163851" elapsed="0.000472"/>
</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-07T09:52:59.161493" elapsed="0.002873"/>
</kw>
<status status="PASS" start="2026-04-07T09:52:59.161265" elapsed="0.003151"/>
</branch>
<status status="PASS" start="2026-04-07T09:52:59.161246" elapsed="0.003195"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:52:59.165228" level="INFO">${ip_address} = 10.30.170.169</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-07T09:52:59.164955" elapsed="0.000300"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:52:59.165305" elapsed="0.000036"/>
</return>
<msg time="2026-04-07T09:52:59.165467" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:52:59.164662" elapsed="0.000830"/>
</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-07T09:52:59.165661" elapsed="0.000430"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:52:59.166396" level="INFO">index=62
host=10.30.170.169
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-07T09:52:59.166500" level="INFO">${karaf_connection_object} = index=62
host=10.30.170.169
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-07T09:52:59.166282" 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-07T09:52:59.166689" elapsed="0.002374"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:52:59.169487" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:52:59.170849" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:52:59.169222" elapsed="0.002014">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:59.174379" elapsed="0.000462"/>
</kw>
<kw name="Open 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-07T09:52:59.175003" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:52:59.175297" elapsed="0.000099"/>
</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-07T09:52:59.172173" elapsed="0.003275"/>
</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-07T09:52:59.171622" elapsed="0.003874"/>
</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="FAIL" start="2026-04-07T09:52:59.157553" elapsed="0.018031">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:00.193760" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:00.193543" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:00.193498" elapsed="0.000378"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:00.194398" 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-07T09:53:00.194646" 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-07T09:53:00.194125" elapsed="0.000572"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:00.195451" level="INFO">{1: 62}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:00.194941" elapsed="0.000600"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:00.196182" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:00.195791" 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-07T09:53:00.197182" elapsed="0.000304"/>
</kw>
<msg time="2026-04-07T09:53:00.197667" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:00.197737" level="INFO">${old_connection_index} = 62</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-07T09:53:00.196543" elapsed="0.001228"/>
</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-07T09:53:00.199077" elapsed="0.000232"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:00.200464" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:00.200171" elapsed="0.001004">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:00.199548" elapsed="0.001694"/>
</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-07T09:53:00.201779" elapsed="0.000116"/>
</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-07T09:53:00.201405" elapsed="0.000535"/>
</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-07T09:53:00.198234" elapsed="0.003752"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:00.197884" elapsed="0.004151"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:00.197855" elapsed="0.004206"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:00.202850" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:00.202548" elapsed="0.000329"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:00.202924" elapsed="0.000040"/>
</return>
<msg time="2026-04-07T09:53:00.203091" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:00.202274" elapsed="0.000841"/>
</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-07T09:53:00.203269" elapsed="0.000490"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:00.204065" level="INFO">index=64
host=10.30.170.169
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-07T09:53:00.204167" level="INFO">${karaf_connection_object} = index=64
host=10.30.170.169
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-07T09:53:00.203949" elapsed="0.000370"/>
</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-07T09:53:00.204474" elapsed="0.002464"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:00.207365" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:00.208990" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:00.207098" elapsed="0.002325">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:00.212483" elapsed="0.000451"/>
</kw>
<kw name="Open 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-07T09:53:00.213115" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:00.213427" elapsed="0.000102"/>
</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-07T09:53:00.210330" elapsed="0.003249"/>
</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-07T09:53:00.209754" elapsed="0.003869"/>
</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="FAIL" start="2026-04-07T09:53:00.192956" elapsed="0.020772">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:01.226879" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:01.226695" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:01.226659" elapsed="0.000334"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.227485" 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-07T09:53:01.227615" 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-07T09:53:01.227237" elapsed="0.000423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:01.228157" level="INFO">{1: 64}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:01.227818" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:01.228579" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:01.228343" elapsed="0.000279"/>
</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-07T09:53:01.229238" elapsed="0.000193"/>
</kw>
<msg time="2026-04-07T09:53:01.229539" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:01.229586" level="INFO">${old_connection_index} = 64</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-07T09:53:01.228799" elapsed="0.000809"/>
</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-07T09:53:01.230562" elapsed="0.000161"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.231398" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:01.231199" elapsed="0.001000">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:01.230879" elapsed="0.001383"/>
</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-07T09:53:01.232764" elapsed="0.000106"/>
</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-07T09:53:01.232424" elapsed="0.000490"/>
</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-07T09:53:01.230011" elapsed="0.002946"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:01.229706" elapsed="0.003301"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:01.229685" elapsed="0.003351"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:01.233903" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:01.233599" elapsed="0.000330"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:01.234124" elapsed="0.000044"/>
</return>
<msg time="2026-04-07T09:53:01.234304" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:01.233284" elapsed="0.001044"/>
</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-07T09:53:01.234480" elapsed="0.000468"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.235237" level="INFO">index=66
host=10.30.170.169
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-07T09:53:01.235338" level="INFO">${karaf_connection_object} = index=66
host=10.30.170.169
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-07T09:53:01.235112" 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-07T09:53:01.235507" elapsed="0.002471"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.238396" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:01.239878" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:01.238133" elapsed="0.002173">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:01.243383" elapsed="0.000415"/>
</kw>
<kw name="Open 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-07T09:53:01.243952" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:01.244248" elapsed="0.000099"/>
</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-07T09:53:01.241258" elapsed="0.003139"/>
</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-07T09:53:01.240686" elapsed="0.003755"/>
</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="FAIL" start="2026-04-07T09:53:01.226123" elapsed="0.018411">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<msg time="2026-04-07T09:53:01.244650" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</msg>
<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="FAIL" start="2026-04-07T09:52:58.114342" elapsed="3.130405">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:52:58.113981" elapsed="3.130837"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:52:58.113845" elapsed="3.131017"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-07T09:52:58.113677" elapsed="3.131232"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-07T09:52:57.654035" elapsed="3.590941"/>
</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-07T09:53:01.247549" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:01.247421" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:01.247395" 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-07T09:53:01.252093" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:01.251986" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:01.251968" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:53:01.253102" 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-07T09:53:01.252718" elapsed="0.000411"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:01.253574" 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-07T09:53:01.253281" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-07T09:53:01.253658" elapsed="0.000034"/>
</return>
<msg time="2026-04-07T09:53:01.253831" 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-07T09:53:01.252380" elapsed="0.001475"/>
</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-07T09:53:01.259137" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:01.259027" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:01.259008" 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-07T09:53:01.260405" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:01.260279" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:01.260261" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:01.260975" level="INFO">${karaf_connection_index} = 66</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-07T09:53:01.260615" elapsed="0.000387"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.261381" 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-07T09:53:01.261154" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.262551" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:01.262097" elapsed="0.001250">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-07T09:53:01.263489" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-07T09:53:01.263536" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</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-07T09:53:01.261557" elapsed="0.002002"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.264666" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-07T09:53:01.264229" elapsed="0.001220">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-07T09:53:01.265584" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-07T09:53:01.265651" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</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-07T09:53:01.263736" elapsed="0.001939"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-07T09:53:01.266682" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/040__Vxlan_Extension_Test.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-07T09:53:01.266004" elapsed="0.000762">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/040__Vxlan_Extension_Test.robot"</status>
</kw>
<status status="FAIL" start="2026-04-07T09:53:01.265767" elapsed="0.001139">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/040__Vxlan_Extension_Test.robot"</status>
</branch>
<status status="FAIL" start="2026-04-07T09:53:01.265747" elapsed="0.001194">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/040__Vxlan_Extension_Test.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-07T09:53:01.267101" elapsed="0.000022"/>
</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-07T09:53:01.267319" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:01.267185" elapsed="0.000281"/>
</branch>
<status status="NOT RUN" start="2026-04-07T09:53:01.267168" elapsed="0.000324"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-07T09:53:01.267525" elapsed="0.000015"/>
</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-07T09:53:01.269483" elapsed="0.000567"/>
</kw>
<kw name="Open 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-07T09:53:01.270380" elapsed="0.000316"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:01.271016" elapsed="0.000237"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:01.268722" elapsed="0.002620"/>
</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-07T09:53:01.267825" elapsed="0.003649"/>
</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="FAIL" start="2026-04-07T09:53:01.259994" elapsed="0.011569">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/040__Vxlan_Extension_Test.robot"</status>
</kw>
<msg time="2026-04-07T09:53:01.271683" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:53:01.271729" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/040__Vxlan_Extension_Test.rob...</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-07T09:53:01.259350" elapsed="0.012468"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-07T09:53:01.272007" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:01.271899" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:01.271880" elapsed="0.000191"/>
</if>
<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-07T09:53:01.273050" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:01.272770" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:01.272752" elapsed="0.000366"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.273429" 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-07T09:53:01.273536" 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-07T09:53:01.273267" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:01.274154" level="INFO">{1: 66}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:01.273877" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:01.274585" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:01.274345" elapsed="0.000321"/>
</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-07T09:53:01.275197" elapsed="0.000303"/>
</kw>
<msg time="2026-04-07T09:53:01.275598" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:01.275662" level="INFO">${old_connection_index} = 66</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-07T09:53:01.274822" elapsed="0.000864"/>
</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-07T09:53:01.276807" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.278502" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:01.278222" elapsed="0.000852">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:01.277297" elapsed="0.001866"/>
</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-07T09:53:01.280129" elapsed="0.000193"/>
</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-07T09:53:01.279400" elapsed="0.000994"/>
</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-07T09:53:01.275979" elapsed="0.004497"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:01.275762" elapsed="0.004765"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:01.275743" elapsed="0.004809"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:01.281538" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:01.281088" elapsed="0.000477"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:01.281614" elapsed="0.000090"/>
</return>
<msg time="2026-04-07T09:53:01.281832" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:01.280799" elapsed="0.001057"/>
</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-07T09:53:01.282007" elapsed="0.000435"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.282749" level="INFO">index=69
host=10.30.170.169
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-07T09:53:01.282850" level="INFO">${karaf_connection_object} = index=69
host=10.30.170.169
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-07T09:53:01.282611" elapsed="0.000265"/>
</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-07T09:53:01.283018" elapsed="0.002268"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.285859" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:01.287132" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:01.285442" elapsed="0.002109">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:01.290974" elapsed="0.000621"/>
</kw>
<kw name="Open 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-07T09:53:01.291848" elapsed="0.000413"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:01.292463" elapsed="0.000206"/>
</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-07T09:53:01.288515" elapsed="0.004238"/>
</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-07T09:53:01.287966" elapsed="0.004835"/>
</kw>
<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="FAIL" start="2026-04-07T09:53:01.272462" elapsed="0.020428">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:01.293250" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-07T09:53:01.293324" elapsed="0.000019"/>
</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="FAIL" start="2026-04-07T09:53:01.258730" elapsed="0.034703">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<msg time="2026-04-07T09:53:01.293547" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:53:01.293591" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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-07T09:53:01.254327" elapsed="0.039288"/>
</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-07T09:53:01.293988" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:01.293736" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:01.293714" elapsed="0.000352"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:53:01.254191" elapsed="0.039899"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-07T09:53:01.254003" elapsed="0.040125"/>
</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-07T09:53:01.251700" elapsed="0.042488"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-07T09:53:01.245573" elapsed="0.048671"/>
</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-07T09:53:01.245127" elapsed="0.049161"/>
</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-07T09:52:57.648967" elapsed="3.645374"/>
</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-07T09:53:01.307411" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:01.307275" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:01.307250" elapsed="0.000241"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.307886" 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-07T09:53:01.308000" 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-07T09:53:01.307701" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:01.308487" level="INFO">{1: 69}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:01.308177" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:01.308934" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:01.308693" 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-07T09:53:01.309540" elapsed="0.000234"/>
</kw>
<msg time="2026-04-07T09:53:01.309873" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:01.309919" level="INFO">${old_connection_index} = 69</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-07T09:53:01.309139" elapsed="0.000804"/>
</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-07T09:53:01.310765" elapsed="0.000135"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.311542" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:01.311368" elapsed="0.000840">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:01.311056" elapsed="0.001216"/>
</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-07T09:53:01.312762" elapsed="0.000099"/>
</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-07T09:53:01.312434" elapsed="0.000473"/>
</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-07T09:53:01.310239" elapsed="0.002712"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:01.310023" elapsed="0.002977"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:01.310003" elapsed="0.003024"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:01.313808" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:01.313509" elapsed="0.000326"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:01.313883" elapsed="0.000036"/>
</return>
<msg time="2026-04-07T09:53:01.314043" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:01.313240" elapsed="0.000827"/>
</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-07T09:53:01.314214" elapsed="0.000429"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.314915" level="INFO">index=71
host=10.30.170.169
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-07T09:53:01.315014" level="INFO">${karaf_connection_object} = index=71
host=10.30.170.169
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-07T09:53:01.314807" elapsed="0.000233"/>
</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-07T09:53:01.315178" elapsed="0.002304"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.317923" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:01.318969" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:01.317663" elapsed="0.001694">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:01.322254" elapsed="0.000301"/>
</kw>
<kw name="Open 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-07T09:53:01.322725" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:01.323011" elapsed="0.000094"/>
</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-07T09:53:01.320200" elapsed="0.002955"/>
</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-07T09:53:01.319685" elapsed="0.003515"/>
</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="FAIL" start="2026-04-07T09:53:01.305592" elapsed="0.017687">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<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="NOT RUN" start="2026-04-07T09:53:01.323436" elapsed="0.000020"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="NOT RUN" start="2026-04-07T09:53:01.323702" elapsed="0.000024"/>
</kw>
<status status="FAIL" start="2026-04-07T09:52:57.648579" elapsed="3.675232">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<test id="s1-s3-t1" name="Make the OVS instance to listen for connection" line="32">
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:01.323914" elapsed="0.000476">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t2" name="Connect controller to OVSDB Node1" line="38">
<doc>Initiate the connection to OVSDB node from controller</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:01.324591" elapsed="0.000394">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t3" name="Connect controller to OVSDB Node2" line="42">
<doc>Initiate the connection to OVSDB node from controller</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:01.325150" elapsed="0.000356">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t4" name="Get Operational Topology from OVSDB Node1 and OVSDB Node2" line="46">
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:01.325744" elapsed="0.000453">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t5" name="Start the Mininet and create custom topology" line="56">
<doc>This will start mininet with custom topology on both the Virtual Machines</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:01.326362" elapsed="0.000869">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t6" name="Get Operational Topology with custom topology" line="69">
<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-07T09:53:01.327490" elapsed="0.000577">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t7" name="Add the bridge s1 in the config datastore of OVSDB Node1" line="80">
<doc>This request will add already operational bridge to the config data store of the OVSDB node.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:01.328335" elapsed="0.000534">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t8" name="Add the bridge s2 in the config datastore of OVSDB Node2" line="88">
<doc>This request will add already operational bridge to the config data store of the OVSDB node.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:01.329126" elapsed="0.000562">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t9" name="Get Config Topology with s1 and s2 Bridges" line="96">
<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="FAIL" start="2026-04-07T09:53:01.329950" elapsed="0.000537">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t10" name="Create Vxlan Port and attach to s1 Bridge" line="107">
<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="FAIL" start="2026-04-07T09:53:01.330844" elapsed="0.000520">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t11" name="Create Vxlan Port and attach to s2 Bridge" line="111">
<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="FAIL" start="2026-04-07T09:53:01.331617" elapsed="0.000536">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t12" name="Get Operational Topology with vxlan tunnel" line="115">
<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-07T09:53:01.332429" elapsed="0.000562">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t13" name="Delete Bridges from config datastore" line="126">
<doc>This request will delete the bridges from config data store.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:01.333244" elapsed="0.000462">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t14" name="Disconnect controller connection from the connected OVSDBs nodes" line="132">
<doc>This request will disconnect the controller from the connected OVSDB node for clean startup for next suite.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:01.333964" elapsed="0.000547">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t15" name="Verify that the operational topology is clean" line="138">
<doc>This request will verify the operational toplogy after the mininet is cleaned.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:01.334783" elapsed="0.000467">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t16" name="Check For Bug 4756" line="150">
<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="FAIL" start="2026-04-07T09:53:01.335506" elapsed="0.000498">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s3-t17" name="Check For Bug 4794" line="158">
<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="FAIL" start="2026-04-07T09:53:01.336256" elapsed="0.000496">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:01.340330" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:01.340051" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:01.340027" elapsed="0.000387"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.340733" 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-07T09:53:01.340841" 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-07T09:53:01.340560" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:01.341391" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.229" 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-07T09:53:01.341013" elapsed="0.000422"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.342043" level="INFO">${conn_id} = 73</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-07T09:53:01.341608" elapsed="0.000462"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:01.342918" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:01.342993" 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-07T09:53:01.342622" 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-07T09:53:01.343167" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.344311" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:01.655804" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:52:57 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:01.343999" elapsed="0.311997"/>
</kw>
<msg time="2026-04-07T09:53:01.656091" 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-07T09:53:01.343655" elapsed="0.312543"/>
</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-07T09:53:01.342280" elapsed="0.314047"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:01.656919" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-07T09:53:02.863155" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:02.863523" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:02.863624" 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-07T09:53:01.656609" elapsed="1.207119"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:02.864165" elapsed="0.000597"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:02.865791" 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-07T09:53:02.865152" 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-07T09:53:02.866356" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:02.866077" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:02.866029" elapsed="0.000477"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:02.866881" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-07T09:53:02.866620" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:02.866588" elapsed="0.000539"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:02.867202" 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-07T09:53:02.873522" 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-07T09:53:02.874044" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:02.874347" 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-07T09:53:02.867900" elapsed="0.006597"/>
</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-07T09:53:01.339542" elapsed="1.535046"/>
</kw>
<msg time="2026-04-07T09:53:02.874726" 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-07T09:53:01.338948" elapsed="1.535850"/>
</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-07T09:53:01.338265" elapsed="1.536611"/>
</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-07T09:53:02.876827" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:02.876547" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:02.876527" elapsed="0.000381"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:02.877184" 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-07T09:53:02.877286" 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-07T09:53:02.877048" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:02.877851" 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.229" 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-07T09:53:02.877455" elapsed="0.000441"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:02.878403" level="INFO">${conn_id} = 75</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-07T09:53:02.878043" elapsed="0.000386"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:02.879297" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:02.879372" 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-07T09:53:02.879018" 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-07T09:53:02.879545" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:02.880702" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:03.210128" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:01 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:02.880377" elapsed="0.330023"/>
</kw>
<msg time="2026-04-07T09:53:03.210516" 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-07T09:53:02.880036" elapsed="0.330625"/>
</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-07T09:53:02.878651" elapsed="0.332169"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:03.211552" 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-07T09:53:03.243947" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-07T09:53:03.244253" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:03.244396" 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-07T09:53:03.211172" elapsed="0.033289"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:03.244884" elapsed="0.001193"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:03.247436" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:03.246607" elapsed="0.000947"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:03.248139" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:03.247804" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:03.247740" 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-07T09:53:03.248786" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-07T09:53:03.248477" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:03.248430" elapsed="0.000588"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:03.249095" 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-07T09:53:03.255245" elapsed="0.000370"/>
</kw>
<kw name="Open 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-07T09:53:03.255795" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:03.256118" 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-07T09:53:03.250067" elapsed="0.006202"/>
</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-07T09:53:02.876070" elapsed="0.380290"/>
</kw>
<msg time="2026-04-07T09:53:03.256426" 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-07T09:53:02.875504" elapsed="0.381002"/>
</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-07T09:53:02.875062" elapsed="0.381536"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-07T09:53:01.337963" elapsed="1.918710"/>
</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-07T09:53:03.258808" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:03.258521" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:03.258502" elapsed="0.000405"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:03.259206" 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-07T09:53:03.259310" 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-07T09:53:03.259055" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:03.259920" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.229" 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-07T09:53:03.259481" elapsed="0.000486"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:03.260511" level="INFO">${conn_id} = 77</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-07T09:53:03.260130" elapsed="0.000407"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:03.261480" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:03.261558" 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-07T09:53:03.261158" 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-07T09:53:03.261750" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:03.263004" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:03.573198" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:03 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:03.262685" elapsed="0.310792"/>
</kw>
<msg time="2026-04-07T09:53:03.573602" 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-07T09:53:03.262299" elapsed="0.311461"/>
</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-07T09:53:03.260770" elapsed="0.313216"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:03.574766" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-07T09:53:03.597930" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:03.598213" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:03.598311" 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-07T09:53:03.574348" elapsed="0.024014"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:03.598795" elapsed="0.000541"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:03.600513" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:03.599821" 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-07T09:53:03.601191" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:03.600841" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:03.600776" 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-07T09:53:03.601900" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-07T09:53:03.601490" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:03.601450" elapsed="0.000645"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:03.602176" elapsed="0.000044"/>
</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-07T09:53:03.606556" elapsed="0.000544"/>
</kw>
<kw name="Open 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-07T09:53:03.607325" elapsed="0.000237"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:03.607781" elapsed="0.000136"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:03.602854" elapsed="0.005135"/>
</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-07T09:53:03.258011" elapsed="0.350108"/>
</kw>
<msg time="2026-04-07T09:53:03.608195" 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-07T09:53:03.257358" elapsed="0.350924"/>
</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-07T09:53:03.256866" elapsed="0.351532"/>
</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-07T09:53:03.611268" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:03.610896" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:03.610869" elapsed="0.000540"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:03.611847" 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-07T09:53:03.611993" 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-07T09:53:03.611614" elapsed="0.000415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:03.612780" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.229" 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-07T09:53:03.612229" elapsed="0.000631"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:03.613609" level="INFO">${conn_id} = 79</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-07T09:53:03.613066" elapsed="0.000598"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:03.614910" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:03.614987" 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-07T09:53:03.614536" 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-07T09:53:03.615162" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:03.616410" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:03.977691" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:03 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:03.616092" elapsed="0.362049"/>
</kw>
<msg time="2026-04-07T09:53:03.978256" 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-07T09:53:03.615744" elapsed="0.362645"/>
</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-07T09:53:03.614049" elapsed="0.364491"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:03.979284" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-07T09:53:04.093183" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:04.093729" level="INFO">${stdout} =  * Exiting ovs-vswitchd (2950)
 * Exiting ovsdb-server (2933)</msg>
<msg time="2026-04-07T09:53:04.093835" 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-07T09:53:03.978903" elapsed="0.114987"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:04.094460" elapsed="0.000790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:04.096447" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:04.095733" 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-07T09:53:04.097152" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:04.096772" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:04.096704" elapsed="0.000620"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:04.097724" elapsed="0.000089"/>
</return>
<status status="PASS" start="2026-04-07T09:53:04.097442" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:04.097408" elapsed="0.000545"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:04.098036" 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-07T09:53:04.103382" elapsed="0.000497"/>
</kw>
<kw name="Open 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-07T09:53:04.104099" elapsed="0.000241"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:04.104535" elapsed="0.000157"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:04.098852" elapsed="0.005915"/>
</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-07T09:53:03.610175" elapsed="0.494724"/>
</kw>
<msg time="2026-04-07T09:53:04.104980" 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-07T09:53:03.609323" elapsed="0.495765"/>
</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-07T09:53:03.608695" elapsed="0.496505"/>
</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-07T09:53:04.108015" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:04.107622" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:04.107595" elapsed="0.000532"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:04.108530" 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-07T09:53:04.108694" 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-07T09:53:04.108330" elapsed="0.000402"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:04.109500" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.229" 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-07T09:53:04.108931" elapsed="0.000633"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:04.110303" level="INFO">${conn_id} = 81</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-07T09:53:04.109790" elapsed="0.000549"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:04.111521" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:04.111644" 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-07T09:53:04.111118" 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-07T09:53:04.112065" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:04.113735" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:04.472348" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:03 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:04.113313" elapsed="0.359223"/>
</kw>
<msg time="2026-04-07T09:53:04.472622" 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-07T09:53:04.112767" elapsed="0.359970"/>
</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-07T09:53:04.110649" elapsed="0.362200"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:04.473332" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-07T09:53:04.485706" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:04.485974" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:04.486072" 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-07T09:53:04.473087" elapsed="0.013035"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:04.486472" elapsed="0.000481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:04.488016" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:04.487355" 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-07T09:53:04.488652" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:04.488285" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:04.488230" elapsed="0.000587"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:04.489180" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-07T09:53:04.488934" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:04.488901" elapsed="0.000483"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:04.489458" 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-07T09:53:04.494554" elapsed="0.000469"/>
</kw>
<kw name="Open 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-07T09:53:04.495241" elapsed="0.000248"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:04.495752" elapsed="0.000146"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:04.490269" elapsed="0.005703"/>
</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-07T09:53:04.106954" elapsed="0.389146"/>
</kw>
<msg time="2026-04-07T09:53:04.496173" 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-07T09:53:04.106132" elapsed="0.390124"/>
</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-07T09:53:04.105473" elapsed="0.390893"/>
</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-07T09:53:04.499192" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:04.498824" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:04.498797" elapsed="0.000525"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:04.499739" 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-07T09:53:04.499883" 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-07T09:53:04.499525" elapsed="0.000470"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:04.500806" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.229" 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-07T09:53:04.500205" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:04.501597" level="INFO">${conn_id} = 83</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-07T09:53:04.501094" elapsed="0.000560"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:04.502829" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:04.502937" 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-07T09:53:04.502419" elapsed="0.000551"/>
</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-07T09:53:04.503180" elapsed="0.000435"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:04.504871" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:04.828497" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:04 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:04.504340" elapsed="0.324346"/>
</kw>
<msg time="2026-04-07T09:53:04.828774" 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-07T09:53:04.503862" elapsed="0.325007"/>
</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-07T09:53:04.501949" elapsed="0.327033"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:04.829472" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-07T09:53:04.932908" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:04.933283" 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-07T09:53:04.933389" level="INFO">${stderr} = 2026-04-07T09:53:04Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:04Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:04Z|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-07T09:53:04.829216" elapsed="0.104230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:04.933922" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:04.935484" level="INFO">2026-04-07T09:53:04Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:04Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:04Z|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-07T09:53:04.934855" 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-07T09:53:04.936120" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:04.935799" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:04.935747" 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-07T09:53:04.936661" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-07T09:53:04.936394" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:04.936361" elapsed="0.000508"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:04.936955" 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-07T09:53:04.942950" elapsed="0.000827"/>
</kw>
<kw name="Open 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-07T09:53:04.944245" elapsed="0.000414"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:04.944953" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:04.937679" elapsed="0.007430"/>
</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-07T09:53:04.498138" elapsed="0.447065"/>
</kw>
<msg time="2026-04-07T09:53:04.945348" 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-07T09:53:04.497344" elapsed="0.448077"/>
</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-07T09:53:04.496678" elapsed="0.448824"/>
</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-07T09:53:01.337601" elapsed="3.607959"/>
</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-07T09:53:04.948267" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:04.947984" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:04.947960" elapsed="0.000391"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:04.948647" 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-07T09:53:04.948754" 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-07T09:53:04.948494" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:04.949300" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.40" 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-07T09:53:04.948922" elapsed="0.000422"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:04.949864" level="INFO">${conn_id} = 85</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-07T09:53:04.949490" elapsed="0.000403"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:04.950951" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:04.951028" 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-07T09:53:04.950435" 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-07T09:53:04.951203" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:04.952377" level="INFO">Logging into '10.30.170.40:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:05.689594" 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  7 09:53:05 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.40
  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-168-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-07T09:53:04.952061" elapsed="0.737835"/>
</kw>
<msg time="2026-04-07T09:53:05.690016" 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-07T09:53:04.951696" elapsed="0.738463"/>
</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-07T09:53:04.950100" elapsed="0.740230"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:05.691171" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-07T09:53:06.849004" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:06.849718" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:06.849842" 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-07T09:53:05.690734" elapsed="1.159172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:06.850738" elapsed="0.001043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:06.853191" 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-07T09:53:06.852273" elapsed="0.001273"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:06.854445" elapsed="0.000052"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:06.853849" elapsed="0.000733"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:06.853757" elapsed="0.000917"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:06.855073" elapsed="0.000089"/>
</return>
<status status="PASS" start="2026-04-07T09:53:06.854808" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:06.854772" elapsed="0.000551"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:06.855433" elapsed="0.000047"/>
</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-07T09:53:06.860798" elapsed="0.000587"/>
</kw>
<kw name="Open 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-07T09:53:06.861664" elapsed="0.000261"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:06.862134" elapsed="0.000188"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:06.856336" elapsed="0.006067"/>
</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-07T09:53:04.947472" elapsed="1.915063"/>
</kw>
<msg time="2026-04-07T09:53:06.862654" 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-07T09:53:04.946902" elapsed="1.915865"/>
</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-07T09:53:04.946457" elapsed="1.916426"/>
</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-07T09:53:06.866033" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:06.865544" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:06.865513" elapsed="0.000641"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:06.866620" 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-07T09:53:06.866800" 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-07T09:53:06.866393" elapsed="0.000444"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:06.867649" 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.40" 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-07T09:53:06.867087" elapsed="0.000633"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:06.868448" level="INFO">${conn_id} = 87</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-07T09:53:06.867927" elapsed="0.000558"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:06.870160" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:06.870237" 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-07T09:53:06.869851" 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-07T09:53:06.870416" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:06.871613" level="INFO">Logging into '10.30.170.40:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:07.200515" 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  7 09:53:05 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.40
  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  7 09:53:05 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:06.871285" elapsed="0.329539"/>
</kw>
<msg time="2026-04-07T09:53:07.201203" 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-07T09:53:06.870931" elapsed="0.330418"/>
</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-07T09:53:06.868798" elapsed="0.332714"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:07.202352" 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-07T09:53:07.235802" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-07T09:53:07.236253" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:07.236366" 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-07T09:53:07.201908" elapsed="0.034528"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:07.237201" elapsed="0.000960"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:07.239692" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:07.238794" elapsed="0.001002"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:07.240382" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:07.240005" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:07.239939" 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-07T09:53:07.240978" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-07T09:53:07.240726" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:07.240683" elapsed="0.000596"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:07.241369" 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">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:53:07.245735" elapsed="0.000408"/>
</kw>
<kw name="Open 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-07T09:53:07.246325" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:07.246702" elapsed="0.000110"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:07.242134" elapsed="0.004734"/>
</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-07T09:53:06.864805" elapsed="0.382162"/>
</kw>
<msg time="2026-04-07T09:53:07.247031" 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-07T09:53:06.863909" elapsed="0.383208"/>
</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-07T09:53:06.863156" elapsed="0.384049"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-07T09:53:04.946153" elapsed="2.301117"/>
</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-07T09:53:07.249459" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:07.249153" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:07.249125" elapsed="0.000418"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:07.249876" 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-07T09:53:07.249988" 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-07T09:53:07.249714" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:07.250655" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.40" 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-07T09:53:07.250181" elapsed="0.000527"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:07.251559" level="INFO">${conn_id} = 89</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-07T09:53:07.250863" elapsed="0.000722"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:07.252511" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:07.252589" 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-07T09:53:07.252190" elapsed="0.000422"/>
</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-07T09:53:07.252915" elapsed="0.000376"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:07.254172" level="INFO">Logging into '10.30.170.40:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:07.647110" 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  7 09:53:05 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.40
  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  7 09:53:07 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:07.253834" elapsed="0.393535"/>
</kw>
<msg time="2026-04-07T09:53:07.647489" 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-07T09:53:07.253456" elapsed="0.394192"/>
</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-07T09:53:07.251823" elapsed="0.395986"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:07.648611" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-07T09:53:07.742517" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:07.743255" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:07.743408" 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-07T09:53:07.648182" elapsed="0.095292"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:07.744148" elapsed="0.001098"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:07.746775" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:07.745947" elapsed="0.000932"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:07.747494" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:07.747094" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:07.747027" elapsed="0.000681"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:07.748096" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-07T09:53:07.747837" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:07.747801" elapsed="0.000518"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:07.748402" 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-07T09:53:07.753725" elapsed="0.000373"/>
</kw>
<kw name="Open 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-07T09:53:07.754263" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:07.754605" elapsed="0.000133"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:07.749249" elapsed="0.005544"/>
</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-07T09:53:07.248612" elapsed="0.506279"/>
</kw>
<msg time="2026-04-07T09:53:07.754951" 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-07T09:53:07.247979" elapsed="0.507045"/>
</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-07T09:53:07.247478" elapsed="0.507627"/>
</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-07T09:53:07.757214" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:07.756924" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:07.756903" elapsed="0.000393"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:07.757911" 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-07T09:53:07.758026" 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-07T09:53:07.757444" elapsed="0.000733"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:07.758738" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.40" 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-07T09:53:07.758330" elapsed="0.000455"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:07.759313" level="INFO">${conn_id} = 91</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-07T09:53:07.758936" elapsed="0.000402"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:07.760211" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:07.760287" 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-07T09:53:07.759905" 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-07T09:53:07.760494" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:07.761677" level="INFO">Logging into '10.30.170.40:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:08.097654" 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  7 09:53:05 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.40
  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  7 09:53:07 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:07.761342" elapsed="0.336568"/>
</kw>
<msg time="2026-04-07T09:53:08.098023" 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-07T09:53:07.760997" elapsed="0.337152"/>
</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-07T09:53:07.759547" elapsed="0.338743"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:08.098950" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-07T09:53:08.256348" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:08.256971" level="INFO">${stdout} =  * Exiting ovs-vswitchd (898)
 * Exiting ovsdb-server (857)</msg>
<msg time="2026-04-07T09:53:08.257084" 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-07T09:53:08.098603" elapsed="0.158541"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:08.257810" elapsed="0.000671"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:08.259919" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:08.259022" elapsed="0.001000"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:08.260635" elapsed="0.000078"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:08.260246" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:08.260171" elapsed="0.000693"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:08.261284" elapsed="0.000092"/>
</return>
<status status="PASS" start="2026-04-07T09:53:08.261021" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:08.260982" elapsed="0.000531"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:08.261595" 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">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:53:08.266337" elapsed="0.000392"/>
</kw>
<kw name="Open 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-07T09:53:08.266892" elapsed="0.000196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:08.267229" 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-07T09:53:08.262601" elapsed="0.004782"/>
</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-07T09:53:07.756402" elapsed="0.511081"/>
</kw>
<msg time="2026-04-07T09:53:08.267710" 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-07T09:53:07.755787" elapsed="0.512006"/>
</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-07T09:53:07.755311" elapsed="0.512569"/>
</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-07T09:53:08.269990" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:08.269705" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:08.269684" elapsed="0.000387"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:08.270383" 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-07T09:53:08.270492" 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-07T09:53:08.270222" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:08.271065" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.40" 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-07T09:53:08.270683" elapsed="0.000427"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:08.271694" level="INFO">${conn_id} = 93</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-07T09:53:08.271259" elapsed="0.000471"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:08.272659" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:08.272740" 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-07T09:53:08.272304" 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-07T09:53:08.272938" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:08.274130" level="INFO">Logging into '10.30.170.40:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:08.592191" 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  7 09:53:05 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.40
  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  7 09:53:08 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:08.273808" elapsed="0.318678"/>
</kw>
<msg time="2026-04-07T09:53:08.592616" 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-07T09:53:08.273435" elapsed="0.319339"/>
</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-07T09:53:08.271962" elapsed="0.320964"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:08.593748" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-07T09:53:08.606060" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:08.606413" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:08.606546" 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-07T09:53:08.593271" elapsed="0.013334"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:08.607125" elapsed="0.001398"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:08.609887" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:08.609086" elapsed="0.000901"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:08.610535" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:08.610195" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:08.610130" elapsed="0.000619"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:08.611122" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-07T09:53:08.610874" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:08.610839" elapsed="0.000494"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:08.611412" 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-07T09:53:08.615999" elapsed="0.000502"/>
</kw>
<kw name="Open 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-07T09:53:08.616772" elapsed="0.000258"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:08.617249" 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-07T09:53:08.612214" elapsed="0.005254"/>
</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-07T09:53:08.269195" elapsed="0.348401"/>
</kw>
<msg time="2026-04-07T09:53:08.617700" 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-07T09:53:08.268548" elapsed="0.349245"/>
</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-07T09:53:08.268085" elapsed="0.349817"/>
</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-07T09:53:08.620809" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:08.620321" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:08.620294" elapsed="0.000649"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:08.621356" 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-07T09:53:08.621500" 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-07T09:53:08.621151" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:08.622136" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.40" 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-07T09:53:08.621760" elapsed="0.000421"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:08.622722" 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-07T09:53:08.622332" elapsed="0.000417"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:08.623623" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:08.623717" 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-07T09:53:08.623323" elapsed="0.000420"/>
</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-07T09:53:08.623892" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:08.625101" level="INFO">Logging into '10.30.170.40:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:08.947593" 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  7 09:53:05 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.40
  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  7 09:53:08 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:08.624766" elapsed="0.323058"/>
</kw>
<msg time="2026-04-07T09:53:08.947920" 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-07T09:53:08.624376" elapsed="0.323661"/>
</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-07T09:53:08.622960" elapsed="0.325209"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:08.948742" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-07T09:53:09.096494" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:09.096971" 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-07T09:53:09.097232" level="INFO">${stderr} = 2026-04-07T09:53:08Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:09Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:09Z|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-07T09:53:08.948438" elapsed="0.148856"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:09.097805" elapsed="0.000671"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.099564" level="INFO">2026-04-07T09:53:08Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:09Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:09Z|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-07T09:53:09.098923" 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-07T09:53:09.100172" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:09.099875" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:09.099822" elapsed="0.000504"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:09.100733" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-07T09:53:09.100442" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:09.100409" elapsed="0.000519"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:09.101001" 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-07T09:53:09.105922" elapsed="0.000380"/>
</kw>
<kw name="Open 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-07T09:53:09.106471" elapsed="0.000207"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:09.106825" 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-07T09:53:09.101710" elapsed="0.005276"/>
</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-07T09:53:08.619625" elapsed="0.487456"/>
</kw>
<msg time="2026-04-07T09:53:09.107142" 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-07T09:53:08.618822" elapsed="0.488392"/>
</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-07T09:53:08.618173" elapsed="0.489121"/>
</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-07T09:53:04.945806" elapsed="4.161545"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:09.108077" level="INFO">${resp} = None</msg>
<msg time="2026-04-07T09:53:09.108120" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:09.107807" elapsed="0.000710">Non-existing index or alias 'session'.</status>
</kw>
<kw name="Log Content" owner="Utils">
<msg time="2026-04-07T09:53:09.110916" level="FAIL">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</msg>
<arg>${resp.text}</arg>
<status status="FAIL" start="2026-04-07T09:53:09.108858" elapsed="0.002095">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:09.111391" level="INFO">${resp} = None</msg>
<msg time="2026-04-07T09:53:09.111431" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:09.111127" elapsed="0.000658">Non-existing index or alias 'session'.</status>
</kw>
<kw name="Log Content" owner="Utils">
<msg time="2026-04-07T09:53:09.114120" level="FAIL">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</msg>
<arg>${resp.text}</arg>
<status status="FAIL" start="2026-04-07T09:53:09.112084" elapsed="0.002069">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="FAIL" start="2026-04-07T09:53:09.107573" elapsed="0.006723">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

3) Non-existing index or alias 'session'.

4) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:09.114539" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-07T09:53:09.114451" elapsed="0.000186"/>
</kw>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="FAIL" start="2026-04-07T09:53:01.337294" elapsed="7.777470">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

3) Non-existing index or alias 'session'.

4) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>Test suite for Connection Manager</doc>
<status status="FAIL" start="2026-04-07T09:52:57.548971" elapsed="11.565902">Suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169

Also suite teardown failed:
Several failures occurred:

1) Non-existing index or alias 'session'.

2) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

3) Non-existing index or alias 'session'.

4) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</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-07T09:53:09.193967" 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-07T09:53:09.189829" elapsed="0.004216"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-07T09:53:09.189564" elapsed="0.004570"/>
</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-07T09:53:09.198902" 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-07T09:53:09.195363" elapsed="0.003570"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-07T09:53:09.199173" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:09.199037" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:09.199005" elapsed="0.000242"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.199802" 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-07T09:53:09.199403" elapsed="0.000442"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.200306" 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-07T09:53:09.199999" elapsed="0.000333"/>
</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-07T09:53:09.200842" elapsed="0.000297"/>
</kw>
<msg time="2026-04-07T09:53:09.201238" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:09.201285" 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-07T09:53:09.200487" elapsed="0.000821"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.201861" 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-07T09:53:09.201468" elapsed="0.000420"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.202973" 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-07T09:53:09.202631" elapsed="0.000372"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.203408" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-07T09:53:09.203146" elapsed="0.000289"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.203915" 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-07T09:53:09.203587" elapsed="0.000356"/>
</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-07T09:53:09.206949" elapsed="0.000289"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.207749" level="INFO">${member_ip} = 10.30.170.169</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-07T09:53:09.207394" elapsed="0.000383"/>
</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-07T09:53:09.207924" elapsed="0.000233"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.208966" 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-07T09:53:09.208662" elapsed="0.000331"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-07T09:53:09.209044" elapsed="0.000047"/>
</return>
<msg time="2026-04-07T09:53:09.209223" 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-07T09:53:09.208350" elapsed="0.000898"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:09.210142" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.169:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7e7383fe7c90&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-07T09:53:09.209403" elapsed="0.000912"/>
</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-07T09:53:09.210475" elapsed="0.000222"/>
</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-07T09:53:09.206361" elapsed="0.004398"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:53:09.206171" elapsed="0.004725"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-07T09:53:09.204007" elapsed="0.006930"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.211573" 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-07T09:53:09.211150" elapsed="0.000466"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.212187" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.169'}</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-07T09:53:09.211790" elapsed="0.000439"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.212775" 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-07T09:53:09.212380" 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-07T09:53:09.202159" elapsed="0.010719"/>
</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-07T09:53:09.195015" elapsed="0.017920"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-07T09:53:09.213157" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:09.213017" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:09.212994" elapsed="0.000233"/>
</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-07T09:53:09.216410" 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-07T09:53:09.215991" elapsed="0.000446"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.216903" 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-07T09:53:09.216586" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-07T09:53:09.216975" elapsed="0.000038"/>
</return>
<msg time="2026-04-07T09:53:09.217140" 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-07T09:53:09.215639" elapsed="0.001526"/>
</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-07T09:53:09.218164" level="INFO">${member_ip} = 10.30.170.169</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-07T09:53:09.217897" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:09.218965" 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-07T09:53:09.219067" 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-07T09:53:09.218786" elapsed="0.000308"/>
</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-07T09:53:09.222579" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:09.221976" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:09.221951" elapsed="0.000787"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:09.223510" 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-07T09:53:09.223801" 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-07T09:53:09.222940" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.224902" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.169" 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-07T09:53:09.224121" elapsed="0.000891"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:09.226185" 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-07T09:53:09.225271" elapsed="0.000965"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.228530" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:09.228956" 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-07T09:53:09.227698" elapsed="0.001403"/>
</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-07T09:53:09.229589" elapsed="0.000734"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:09.232174" level="INFO">Logging into '10.30.170.169:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:09.655803" 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  7 09:52:38 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.169
  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  7 09:52:58 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:09.231510" elapsed="0.424466"/>
</kw>
<msg time="2026-04-07T09:53:09.656061" 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-07T09:53:09.230843" elapsed="0.425389"/>
</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-07T09:53:09.226698" elapsed="0.429683"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:09.657322" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-07T09:53:09.669926" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-07T09:53:09.670288" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:09.670516" 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-07T09:53:09.656767" elapsed="0.013866"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:09.671329" elapsed="0.001127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.674630" 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-07T09:53:09.673783" elapsed="0.001013"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:09.675395" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:09.675035" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:09.674996" elapsed="0.000632"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:09.676094" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-07T09:53:09.675781" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:09.675756" elapsed="0.000586"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:09.676423" 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-07T09:53:09.680926" elapsed="0.000625"/>
</kw>
<kw name="Open 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-07T09:53:09.681986" elapsed="0.000282"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:09.682516" elapsed="0.000239"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:09.677139" elapsed="0.005684"/>
</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-07T09:53:09.220993" elapsed="0.462006"/>
</kw>
<msg time="2026-04-07T09:53:09.683054" 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-07T09:53:09.220309" elapsed="0.462798"/>
</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-07T09:53:09.219828" elapsed="0.463360"/>
</kw>
<msg time="2026-04-07T09:53:09.683228" 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-07T09:53:09.219242" elapsed="0.464033"/>
</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-07T09:53:09.685830" elapsed="0.000303"/>
</kw>
<kw name="Open 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-07T09:53:09.686347" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:09.686633" elapsed="0.000110"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:09.683552" elapsed="0.003242"/>
</kw>
<msg time="2026-04-07T09:53:09.686884" 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-07T09:53:09.218398" elapsed="0.468511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.687318" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:09.687075" elapsed="0.000284"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-07T09:53:09.687401" 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-07T09:53:09.217530" elapsed="0.469995"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:53:09.217357" elapsed="0.470204"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-07T09:53:09.217223" elapsed="0.470375"/>
</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-07T09:53:09.213454" elapsed="0.474229"/>
</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-07T09:53:09.687831" elapsed="0.000208"/>
</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-07T09:53:09.700912" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:09.700802" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:09.700781" elapsed="0.000199"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:09.701254" 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-07T09:53:09.701356" 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-07T09:53:09.701122" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.701798" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:09.701524" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:09.702236" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:09.701984" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:09.703004" 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-07T09:53:09.702782" elapsed="0.000329">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-07T09:53:09.703215" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:53:09.703260" 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-07T09:53:09.702424" elapsed="0.000859"/>
</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-07T09:53:09.703574" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:09.703358" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:09.703340" elapsed="0.000350"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:09.704401" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:09.704140" elapsed="0.000287"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:09.704473" elapsed="0.000029"/>
</return>
<msg time="2026-04-07T09:53:09.704620" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:09.703880" elapsed="0.000780"/>
</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-07T09:53:09.704807" elapsed="0.000393"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:09.705469" level="INFO">index=100
host=10.30.170.169
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-07T09:53:09.705566" level="INFO">${karaf_connection_object} = index=100
host=10.30.170.169
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-07T09:53:09.705357" elapsed="0.000234"/>
</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-07T09:53:09.705786" elapsed="0.002085"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:09.708282" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:09.709309" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:09.708026" elapsed="0.001735">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:09.712708" 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-07T09:53:09.713189" elapsed="0.000140"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:09.713466" elapsed="0.000093"/>
</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-07T09:53:09.710545" elapsed="0.003064"/>
</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-07T09:53:09.710032" elapsed="0.003653"/>
</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="FAIL" start="2026-04-07T09:53:09.700505" elapsed="0.013266">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:10.731567" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:10.731423" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:10.731396" elapsed="0.000273"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:10.732022" 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-07T09:53:10.732138" 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-07T09:53:10.731846" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:10.732604" level="INFO">{1: 100}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:10.732312" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:10.733057" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:10.732817" elapsed="0.000283"/>
</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-07T09:53:10.733619" elapsed="0.000203"/>
</kw>
<msg time="2026-04-07T09:53:10.733919" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:10.733965" level="INFO">${old_connection_index} = 100</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-07T09:53:10.733252" elapsed="0.000735"/>
</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-07T09:53:10.734796" elapsed="0.000136"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:10.735596" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:10.735410" elapsed="0.000723">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:10.735094" elapsed="0.001102"/>
</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-07T09:53:10.736681" elapsed="0.000102"/>
</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-07T09:53:10.736354" elapsed="0.000475"/>
</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-07T09:53:10.734275" elapsed="0.002598"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:10.734063" elapsed="0.002859"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:10.734044" elapsed="0.002904"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:10.737697" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:10.737411" elapsed="0.000313"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:10.737772" elapsed="0.000032"/>
</return>
<msg time="2026-04-07T09:53:10.737928" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:10.737146" elapsed="0.000872"/>
</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-07T09:53:10.738168" elapsed="0.000401"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:10.738860" level="INFO">index=102
host=10.30.170.169
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-07T09:53:10.738960" level="INFO">${karaf_connection_object} = index=102
host=10.30.170.169
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-07T09:53:10.738746" elapsed="0.000241"/>
</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-07T09:53:10.739126" elapsed="0.002222"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:10.741777" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:10.743171" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:10.741502" elapsed="0.002050">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:10.746457" 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-07T09:53:10.746991" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:10.747283" 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-07T09:53:10.744415" elapsed="0.003017"/>
</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-07T09:53:10.743900" elapsed="0.003579"/>
</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="FAIL" start="2026-04-07T09:53:10.730996" elapsed="0.016566">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:11.765835" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:11.765687" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:11.765659" elapsed="0.000265"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:11.766306" 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-07T09:53:11.766421" 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-07T09:53:11.766119" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:11.766919" level="INFO">{1: 102}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:11.766596" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:11.767344" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:11.767104" elapsed="0.000282"/>
</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-07T09:53:11.767934" elapsed="0.000183"/>
</kw>
<msg time="2026-04-07T09:53:11.768217" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:11.768262" level="INFO">${old_connection_index} = 102</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-07T09:53:11.767538" elapsed="0.000746"/>
</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-07T09:53:11.769114" elapsed="0.000135"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:11.769907" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:11.769729" elapsed="0.000716">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:11.769402" elapsed="0.001105"/>
</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-07T09:53:11.770992" elapsed="0.000098"/>
</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-07T09:53:11.770682" elapsed="0.000453"/>
</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-07T09:53:11.768584" elapsed="0.002671"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:11.768358" elapsed="0.002948"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:11.768340" elapsed="0.002991"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:11.772070" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:11.771805" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:11.772143" elapsed="0.000034"/>
</return>
<msg time="2026-04-07T09:53:11.772300" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:11.771524" elapsed="0.000800"/>
</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-07T09:53:11.772468" elapsed="0.000423"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:11.773159" level="INFO">index=104
host=10.30.170.169
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-07T09:53:11.773259" level="INFO">${karaf_connection_object} = index=104
host=10.30.170.169
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-07T09:53:11.773048" elapsed="0.000237"/>
</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-07T09:53:11.773427" elapsed="0.002268"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:11.776103" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:11.777449" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:11.775848" elapsed="0.001998">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:11.780748" elapsed="0.000357"/>
</kw>
<kw name="Open 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-07T09:53:11.781256" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:11.781535" elapsed="0.000097"/>
</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-07T09:53:11.778689" elapsed="0.003009"/>
</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-07T09:53:11.778129" elapsed="0.003615"/>
</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="FAIL" start="2026-04-07T09:53:11.765263" elapsed="0.016562">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:12.798928" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:12.798784" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:12.798757" elapsed="0.000254"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.799374" 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-07T09:53:12.799489" 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-07T09:53:12.799199" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:12.799986" level="INFO">{1: 104}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:12.799689" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:12.800411" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:12.800173" elapsed="0.000281"/>
</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-07T09:53:12.801001" elapsed="0.000182"/>
</kw>
<msg time="2026-04-07T09:53:12.801284" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:12.801329" level="INFO">${old_connection_index} = 104</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-07T09:53:12.800606" elapsed="0.000745"/>
</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-07T09:53:12.802245" elapsed="0.000137"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.803086" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:12.802916" elapsed="0.000667">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:12.802576" elapsed="0.001085"/>
</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-07T09:53:12.804135" elapsed="0.000097"/>
</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-07T09:53:12.803821" elapsed="0.000455"/>
</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-07T09:53:12.801640" elapsed="0.002680"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:12.801426" elapsed="0.002943"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:12.801408" elapsed="0.002987"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:12.805130" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:12.804868" elapsed="0.000288"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:12.805203" elapsed="0.000033"/>
</return>
<msg time="2026-04-07T09:53:12.805355" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:12.804588" elapsed="0.000791"/>
</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-07T09:53:12.805522" elapsed="0.000417"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.806207" level="INFO">index=106
host=10.30.170.169
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-07T09:53:12.806307" level="INFO">${karaf_connection_object} = index=106
host=10.30.170.169
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-07T09:53:12.806096" elapsed="0.000238"/>
</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-07T09:53:12.806472" elapsed="0.002296"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.809177" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:12.810761" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:12.808921" elapsed="0.002209">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:12.813938" elapsed="0.000343"/>
</kw>
<kw name="Open 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-07T09:53:12.814432" elapsed="0.000141"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:12.814748" elapsed="0.000097"/>
</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-07T09:53:12.811924" elapsed="0.002972"/>
</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-07T09:53:12.811397" elapsed="0.003543"/>
</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="FAIL" start="2026-04-07T09:53:12.798359" elapsed="0.016664">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<msg time="2026-04-07T09:53:12.815113" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</msg>
<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="FAIL" start="2026-04-07T09:53:09.688801" elapsed="3.126401">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:09.688372" elapsed="3.126896"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:53:09.688242" elapsed="3.127067"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-07T09:53:09.688095" elapsed="3.127250"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-07T09:53:09.194481" elapsed="3.620959"/>
</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-07T09:53:12.817907" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:12.817799" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:12.817780" 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-07T09:53:12.822291" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:12.822186" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:12.822168" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:53:12.823340" 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-07T09:53:12.822952" elapsed="0.000415"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:12.823835" 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-07T09:53:12.823517" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-07T09:53:12.823906" elapsed="0.000029"/>
</return>
<msg time="2026-04-07T09:53:12.824061" 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-07T09:53:12.822571" elapsed="0.001515"/>
</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-07T09:53:12.829168" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:12.829062" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:12.829044" 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-07T09:53:12.830375" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:12.830252" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:12.830234" elapsed="0.000207"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:12.830941" level="INFO">${karaf_connection_index} = 106</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-07T09:53:12.830573" elapsed="0.000395"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.831332" 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-07T09:53:12.831114" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.832413" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:12.832002" elapsed="0.001095">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-07T09:53:12.833231" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-07T09:53:12.833276" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</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-07T09:53:12.831504" elapsed="0.001794"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.834335" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-07T09:53:12.833946" elapsed="0.001201">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-07T09:53:12.835281" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-07T09:53:12.835326" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</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-07T09:53:12.833452" elapsed="0.001896"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-07T09:53:12.836307" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/010__configure_1_ovsdb_node.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-07T09:53:12.835676" elapsed="0.000710">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/010__configure_1_ovsdb_node.robot"</status>
</kw>
<status status="FAIL" start="2026-04-07T09:53:12.835423" elapsed="0.001097">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/010__configure_1_ovsdb_node.robot"</status>
</branch>
<status status="FAIL" start="2026-04-07T09:53:12.835404" elapsed="0.001150">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/010__configure_1_ovsdb_node.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-07T09:53:12.836725" elapsed="0.000023"/>
</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-07T09:53:12.836941" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:12.836811" elapsed="0.000320"/>
</branch>
<status status="NOT RUN" start="2026-04-07T09:53:12.836795" elapsed="0.000369"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-07T09:53:12.837204" elapsed="0.000018"/>
</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-07T09:53:12.839125" elapsed="0.000442"/>
</kw>
<kw name="Open 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-07T09:53:12.839961" elapsed="0.000278"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:12.840547" elapsed="0.000243"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:12.838319" elapsed="0.002559"/>
</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-07T09:53:12.837459" elapsed="0.003551"/>
</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="FAIL" start="2026-04-07T09:53:12.829972" elapsed="0.011123">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/010__configure_1_ovsdb_node.robot"</status>
</kw>
<msg time="2026-04-07T09:53:12.841195" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:53:12.841239" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/010__configure_1_ovsdb_node.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-07T09:53:12.829371" elapsed="0.011891"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-07T09:53:12.841441" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:12.841337" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:12.841318" elapsed="0.000186"/>
</if>
<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-07T09:53:12.842231" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:12.842129" elapsed="0.000145"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:12.842112" elapsed="0.000182"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.844006" 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-07T09:53:12.844120" 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-07T09:53:12.842438" elapsed="0.001709"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:12.844549" level="INFO">{1: 106}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:12.844291" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:12.844996" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:12.844753" 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-07T09:53:12.845531" elapsed="0.000301"/>
</kw>
<msg time="2026-04-07T09:53:12.845930" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:12.845977" level="INFO">${old_connection_index} = 106</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-07T09:53:12.845187" elapsed="0.000813"/>
</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-07T09:53:12.847080" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.848703" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:12.848431" elapsed="0.000704">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:12.847588" elapsed="0.001636"/>
</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-07T09:53:12.850170" elapsed="0.000190"/>
</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-07T09:53:12.849454" elapsed="0.000977"/>
</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-07T09:53:12.846288" elapsed="0.004225"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:12.846076" elapsed="0.004487"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:12.846057" elapsed="0.004532"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:12.851541" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:12.851061" elapsed="0.000507"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:12.851719" elapsed="0.000033"/>
</return>
<msg time="2026-04-07T09:53:12.851875" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:12.850798" elapsed="0.001101"/>
</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-07T09:53:12.852042" elapsed="0.000386"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.852712" level="INFO">index=109
host=10.30.170.169
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-07T09:53:12.852810" level="INFO">${karaf_connection_object} = index=109
host=10.30.170.169
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-07T09:53:12.852584" 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-07T09:53:12.852971" elapsed="0.002082"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.855501" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:12.856681" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:12.855208" elapsed="0.001842">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:12.860321" elapsed="0.000642"/>
</kw>
<kw name="Open 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-07T09:53:12.861204" elapsed="0.000394"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:12.861819" elapsed="0.000177"/>
</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-07T09:53:12.857834" elapsed="0.004241"/>
</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-07T09:53:12.857314" elapsed="0.004810"/>
</kw>
<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="FAIL" start="2026-04-07T09:53:12.841894" elapsed="0.020312">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:12.862524" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-07T09:53:12.862596" 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="FAIL" start="2026-04-07T09:53:12.828776" elapsed="0.033940">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<msg time="2026-04-07T09:53:12.862820" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:53:12.862863" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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-07T09:53:12.824449" elapsed="0.038437"/>
</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-07T09:53:12.863201" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:12.862962" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:12.862943" elapsed="0.000334"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:53:12.824315" elapsed="0.038985"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-07T09:53:12.824142" elapsed="0.039186"/>
</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-07T09:53:12.821902" elapsed="0.041481"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-07T09:53:12.816019" elapsed="0.047446"/>
</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-07T09:53:12.815590" elapsed="0.047916"/>
</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-07T09:53:09.189257" elapsed="3.674297"/>
</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-07T09:53:12.876371" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:12.876265" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:12.876246" elapsed="0.000225"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.876761" 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-07T09:53:12.876863" 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-07T09:53:12.876617" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:12.877287" level="INFO">{1: 109}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:12.877031" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:12.877725" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:12.877470" elapsed="0.000299"/>
</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-07T09:53:12.878255" elapsed="0.000177"/>
</kw>
<msg time="2026-04-07T09:53:12.878529" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:12.878574" level="INFO">${old_connection_index} = 109</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-07T09:53:12.877916" elapsed="0.000680"/>
</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-07T09:53:12.879388" elapsed="0.000132"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.880181" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:12.880037" elapsed="0.000560">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:12.879716" elapsed="0.000959"/>
</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-07T09:53:12.881145" elapsed="0.000094"/>
</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-07T09:53:12.880833" elapsed="0.000450"/>
</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-07T09:53:12.878900" elapsed="0.002426"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:12.878690" elapsed="0.002683"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:12.878670" elapsed="0.002728"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:12.882123" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:12.881863" elapsed="0.000286"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:12.882196" elapsed="0.000029"/>
</return>
<msg time="2026-04-07T09:53:12.882343" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:12.881585" elapsed="0.000782"/>
</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-07T09:53:12.882511" elapsed="0.000405"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.883194" level="INFO">index=111
host=10.30.170.169
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-07T09:53:12.883291" level="INFO">${karaf_connection_object} = index=111
host=10.30.170.169
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-07T09:53:12.883080" elapsed="0.000237"/>
</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-07T09:53:12.883454" elapsed="0.002231"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.886090" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:12.887084" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:12.885841" elapsed="0.001608">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:12.890295" elapsed="0.000302"/>
</kw>
<kw name="Open 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-07T09:53:12.890766" elapsed="0.000141"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:12.891044" elapsed="0.000094"/>
</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-07T09:53:12.888271" elapsed="0.002917"/>
</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-07T09:53:12.887735" elapsed="0.003536"/>
</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="FAIL" start="2026-04-07T09:53:12.874668" elapsed="0.016679">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<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="NOT RUN" start="2026-04-07T09:53:12.891496" elapsed="0.000021"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="NOT RUN" start="2026-04-07T09:53:12.891737" elapsed="0.000024"/>
</kw>
<status status="FAIL" start="2026-04-07T09:53:09.188893" elapsed="3.702975">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<test id="s1-s4-t1" name="Make the OVS instance to listen for connection" line="28">
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.891945" elapsed="0.000499">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t2" name="Connect to OVSDB Node" line="32">
<doc>Initiate the connection to OVSDB node from controller</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.892727" elapsed="0.000386">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t3" name="Get Operational Topology" line="37">
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.893377" elapsed="0.000442">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t4" name="Create a Bridge" line="47">
<doc>This will create bridge on the specified OVSDB node.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.894071" elapsed="0.000366">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t5" name="Get Config Topology with Bridge" line="55">
<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="FAIL" start="2026-04-07T09:53:12.894704" elapsed="0.000505">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t6" name="Get Operational Topology with Bridge" line="61">
<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-07T09:53:12.895462" elapsed="0.000572">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t7" name="Create Port and Attach to a Bridge" line="72">
<doc>This request will creates port/interface and attach it to the specific bridge</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.896289" elapsed="0.000457">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t8" name="Get Operational Topology with Port" line="76">
<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-07T09:53:12.896997" elapsed="0.000509">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t9" name="Delete the Port" line="87">
<doc>This request will delete the port node from the bridge node and data store.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.897773" elapsed="0.000402">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t10" name="Get Operational Topology after Deletion of Port" line="94">
<doc>This request will fetch the operational topology after the Port is deleted</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.898426" elapsed="0.000491">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t11" name="Delete the Bridge" line="105">
<doc>This request will delete the bridge node from the config data store.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.899168" elapsed="0.000395">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t12" name="Get Operational Topology after Deletion of Bridge" line="112">
<doc>This request will fetch the operational topology after the Bridge is deleted</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.899844" elapsed="0.000511">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t13" name="Verify Config Still Has OVS Info" line="123">
<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-07T09:53:12.900605" elapsed="0.000519">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t14" name="Delete the OVSDB Node" line="135">
<doc>This request will delete the OVSDB node</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.901376" elapsed="0.000370">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t15" name="Get Operational Topology to make sure the connection has been deleted" line="139">
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.901999" elapsed="0.000512">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t16" name="Get Configuration Topology to make sure the connection has been deleted" line="150">
<doc>This request will fetch the configuration topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.902777" elapsed="0.000392">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t17" name="Reconnect to OVSDB Node" line="161">
<doc>Initiate the connection to OVSDB node from controller</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.903419" elapsed="0.000407">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t18" name="Get Operational Topology After Node Reconnect" line="165">
<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-07T09:53:12.904152" elapsed="0.000583">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t19" name="Get Config Topology After Reconnect" line="175">
<doc>This will fetch the configuration topology from configuration data store after reconnect</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.905004" elapsed="0.000487">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t20" name="Create OVSDB NODE HOST1" line="187">
<doc>This request will create OVSDB NODE HOST1</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.905778" elapsed="0.000386">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t21" name="Create QOS entry" line="191">
<doc>This request will create QOS entry</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.906433" elapsed="0.000382">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t22" name="Create Queue entry to the queues list of a ovsdb node" line="195">
<doc>This request will creates Queue entry in the queues list of a ovsdb node</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.907086" elapsed="0.000491">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t23" name="Update existing Queue entry to a OVSDB Node" line="199">
<doc>This request will update the existing queue entry to a OVSDB Node</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.907870" elapsed="0.000504">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t24" name="Update QOS with a Linked queue entry to a OVSDB Node" line="203">
<doc>This request will update the QOS entry with a Linked queue entry to a OVSDB Node</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.908664" elapsed="0.000473">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t25" name="Get QOS Config Topology with port" line="207">
<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="FAIL" start="2026-04-07T09:53:12.909305" elapsed="0.000495">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t26" name="Get QOS Operational Topology with port" line="217">
<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-07T09:53:12.909977" elapsed="0.000491">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t27" name="Get Queue Config Topology with port" line="228">
<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="FAIL" start="2026-04-07T09:53:12.910635" elapsed="0.000617">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t28" name="Get Queue Operational Topology with port" line="238">
<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-07T09:53:12.911517" elapsed="0.000856">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t29" name="Delete a Queue entry from a Qos entry" line="249">
<doc>This request will Delete a Queue entry from a Qos entry</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.912640" elapsed="0.000431">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t30" name="Delete a QoS entry from a node" line="257">
<doc>This request will Delete a QoS entry from a node.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.913321" elapsed="0.000407">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t31" name="Delete a Queue entry from an ovsdb node" line="265">
<doc>This request will Delete a Queue entry from an ovsdb node</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.913981" elapsed="0.000423">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t32" name="Delete the OVSDB Node HOST1" line="273">
<doc>This request will delete the OVSDB node</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:12.914674" elapsed="0.000373">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t33" name="Get Config Topology to verify that deleted configurations are cleaned from config datastore" line="281">
<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="FAIL" start="2026-04-07T09:53:12.915302" elapsed="0.000445">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t34" name="Check For Bug 4756" line="291">
<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="FAIL" start="2026-04-07T09:53:12.915996" elapsed="0.000494">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s4-t35" name="Check For Bug 4794" line="299">
<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="FAIL" start="2026-04-07T09:53:12.916758" elapsed="0.000484">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<kw name="Suite Teardown" type="TEARDOWN">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:12.918282" level="INFO">@{uris} = [ /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.229%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-07T09:53:12.917967" elapsed="0.000342"/>
</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-07T09:53:12.921383" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:12.921077" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:12.921057" elapsed="0.000411"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.921762" 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-07T09:53:12.921864" 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-07T09:53:12.921611" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:12.922413" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.229" 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-07T09:53:12.922033" elapsed="0.000426"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.922986" level="INFO">${conn_id} = 113</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-07T09:53:12.922609" elapsed="0.000403"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:12.924004" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:12.924082" 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-07T09:53:12.923557" elapsed="0.000549"/>
</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-07T09:53:12.924258" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:12.925525" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:13.250941" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:04 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:12.925141" elapsed="0.325885"/>
</kw>
<msg time="2026-04-07T09:53:13.251088" 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-07T09:53:12.924793" elapsed="0.326371"/>
</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-07T09:53:12.923220" elapsed="0.328027"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:13.251592" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-07T09:53:14.411278" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:14.412149" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:14.412303" 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-07T09:53:13.251412" elapsed="1.160975"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:14.413466" elapsed="0.001033"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:14.415970" 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-07T09:53:14.415026" elapsed="0.001132"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:14.416936" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:14.416405" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:14.416329" elapsed="0.000841"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:14.417796" elapsed="0.000147"/>
</return>
<status status="PASS" start="2026-04-07T09:53:14.417374" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:14.417308" elapsed="0.000818"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:14.418219" 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">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:53:14.422374" elapsed="0.000396"/>
</kw>
<kw name="Open 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-07T09:53:14.422942" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:14.423287" 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-07T09:53:14.419220" elapsed="0.004222"/>
</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-07T09:53:12.920577" elapsed="1.502969"/>
</kw>
<msg time="2026-04-07T09:53:14.423611" 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-07T09:53:12.919987" elapsed="1.503725"/>
</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-07T09:53:12.919540" elapsed="1.504265"/>
</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-07T09:53:14.425908" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:14.425605" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:14.425585" elapsed="0.000409"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:14.426312" 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-07T09:53:14.426440" 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-07T09:53:14.426147" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:14.427012" 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.229" 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-07T09:53:14.426614" elapsed="0.000445"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:14.427591" level="INFO">${conn_id} = 115</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-07T09:53:14.427207" elapsed="0.000410"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:14.428855" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:14.428932" 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-07T09:53:14.428511" elapsed="0.000445"/>
</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-07T09:53:14.429108" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:14.430402" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:14.757918" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:13 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:14.429954" elapsed="0.328127"/>
</kw>
<msg time="2026-04-07T09:53:14.758176" 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-07T09:53:14.429588" elapsed="0.328694"/>
</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-07T09:53:14.427847" elapsed="0.330565"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:14.758965" 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-07T09:53:14.792111" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-07T09:53:14.792377" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:14.792478" 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-07T09:53:14.758684" elapsed="0.033918"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:14.793015" elapsed="0.000485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:14.794578" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:14.793949" 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-07T09:53:14.795197" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:14.794893" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:14.794837" elapsed="0.000518"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:14.795743" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-07T09:53:14.795471" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:14.795438" elapsed="0.000489"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:14.796001" 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-07T09:53:14.801600" elapsed="0.000474"/>
</kw>
<kw name="Open 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-07T09:53:14.802290" elapsed="0.000218"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:14.802725" elapsed="0.000135"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:14.796765" elapsed="0.006166"/>
</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-07T09:53:14.425110" elapsed="0.377948"/>
</kw>
<msg time="2026-04-07T09:53:14.803132" 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-07T09:53:14.424471" elapsed="0.378747"/>
</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-07T09:53:14.423989" elapsed="0.379339"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-07T09:53:12.919257" elapsed="1.884150"/>
</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-07T09:53:14.806175" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:14.805815" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:14.805788" elapsed="0.000500"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:14.806700" 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-07T09:53:14.806842" 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-07T09:53:14.806488" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:14.807614" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.229" 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-07T09:53:14.807074" elapsed="0.000629"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:14.808768" level="INFO">${conn_id} = 117</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-07T09:53:14.807904" elapsed="0.000906"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:14.809756" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:14.809833" 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-07T09:53:14.809455" 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-07T09:53:14.810005" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:14.811154" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:15.136422" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:14 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:14.810841" elapsed="0.325901"/>
</kw>
<msg time="2026-04-07T09:53:15.136828" 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-07T09:53:14.810478" elapsed="0.326453"/>
</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-07T09:53:14.809104" elapsed="0.327943"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:15.137559" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-07T09:53:15.221767" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:15.222108" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:15.222205" 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-07T09:53:15.137295" elapsed="0.084962"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:15.222737" elapsed="0.000607"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:15.224442" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:15.223789" 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-07T09:53:15.225062" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:15.224754" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:15.224694" 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-07T09:53:15.225614" elapsed="0.000109"/>
</return>
<status status="PASS" start="2026-04-07T09:53:15.225340" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:15.225307" elapsed="0.000543"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:15.225925" 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-07T09:53:15.230904" elapsed="0.000334"/>
</kw>
<kw name="Open 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-07T09:53:15.231395" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:15.231722" 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-07T09:53:15.226615" elapsed="0.005257"/>
</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-07T09:53:14.805119" elapsed="0.426844"/>
</kw>
<msg time="2026-04-07T09:53:15.232020" 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-07T09:53:14.804305" elapsed="0.427781"/>
</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-07T09:53:14.803685" elapsed="0.428478"/>
</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-07T09:53:15.234162" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:15.233901" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:15.233883" elapsed="0.000360"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:15.234757" 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-07T09:53:15.234865" 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-07T09:53:15.234379" elapsed="0.000512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:15.235409" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.229" 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-07T09:53:15.235034" elapsed="0.000420"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:15.235983" level="INFO">${conn_id} = 119</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-07T09:53:15.235600" elapsed="0.000408"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:15.236853" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:15.236927" 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-07T09:53:15.236549" 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-07T09:53:15.237157" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:15.238333" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:15.566471" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:15 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:15.238017" elapsed="0.328671"/>
</kw>
<msg time="2026-04-07T09:53:15.566783" 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-07T09:53:15.237673" elapsed="0.329223"/>
</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-07T09:53:15.236215" elapsed="0.330815"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:15.567629" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-07T09:53:15.733473" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:15.733935" level="INFO">${stdout} =  * Exiting ovs-vswitchd (3525)
 * Exiting ovsdb-server (3508)</msg>
<msg time="2026-04-07T09:53:15.734048" 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-07T09:53:15.567312" elapsed="0.166792"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:15.734606" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:15.736705" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:15.735969" elapsed="0.000842"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:15.737349" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:15.737005" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:15.736946" 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-07T09:53:15.737943" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-07T09:53:15.737683" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:15.737613" elapsed="0.000540"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:15.738233" 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-07T09:53:15.742589" elapsed="0.000494"/>
</kw>
<kw name="Open 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-07T09:53:15.743340" elapsed="0.000240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:15.743808" 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-07T09:53:15.739066" elapsed="0.004961"/>
</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-07T09:53:15.233379" elapsed="0.510781"/>
</kw>
<msg time="2026-04-07T09:53:15.744242" 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-07T09:53:15.232815" elapsed="0.511519"/>
</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-07T09:53:15.232352" elapsed="0.512094"/>
</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-07T09:53:15.747326" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:15.747010" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:15.746982" elapsed="0.000425"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:15.747708" 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-07T09:53:15.747811" 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-07T09:53:15.747548" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:15.748425" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.229" 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-07T09:53:15.748049" elapsed="0.000421"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:15.749001" level="INFO">${conn_id} = 121</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-07T09:53:15.748615" elapsed="0.000411"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:15.749881" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:15.749958" 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-07T09:53:15.749562" 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-07T09:53:15.750129" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:15.751361" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:16.078369" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:15 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:15.751038" elapsed="0.327509"/>
</kw>
<msg time="2026-04-07T09:53:16.078661" 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-07T09:53:15.750599" elapsed="0.328168"/>
</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-07T09:53:15.749231" elapsed="0.329658"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:16.079442" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-07T09:53:16.092774" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:16.093046" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:16.093142" 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-07T09:53:16.079159" elapsed="0.014038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:16.093564" elapsed="0.001598"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.096254" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:16.095581" 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-07T09:53:16.096873" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:16.096525" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:16.096469" 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-07T09:53:16.097377" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-07T09:53:16.097147" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:16.097115" elapsed="0.000444"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:16.097671" 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-07T09:53:16.103433" elapsed="0.000349"/>
</kw>
<kw name="Open 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-07T09:53:16.103938" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:16.104236" elapsed="0.000093"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:16.098346" elapsed="0.006033"/>
</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-07T09:53:15.746241" elapsed="0.358226"/>
</kw>
<msg time="2026-04-07T09:53:16.104519" 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-07T09:53:15.745403" elapsed="0.359177"/>
</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-07T09:53:15.744747" elapsed="0.359994"/>
</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-07T09:53:16.106711" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:16.106413" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:16.106394" elapsed="0.000408"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:16.107083" 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-07T09:53:16.107185" 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-07T09:53:16.106943" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.107744" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.229" 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-07T09:53:16.107349" elapsed="0.000440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:16.108298" level="INFO">${conn_id} = 123</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-07T09:53:16.107933" elapsed="0.000390"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.109158" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:16.109233" 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-07T09:53:16.108877" 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-07T09:53:16.109400" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:16.110527" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:16.440498" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:16 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:16.110219" elapsed="0.330486"/>
</kw>
<msg time="2026-04-07T09:53:16.440802" 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-07T09:53:16.109883" elapsed="0.331032"/>
</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-07T09:53:16.108528" elapsed="0.332515"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:16.441601" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-07T09:53:16.587148" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:16.587566" 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-07T09:53:16.587714" level="INFO">${stderr} = 2026-04-07T09:53:16Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:16Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:16Z|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-07T09:53:16.441313" elapsed="0.146463"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:16.588265" elapsed="0.000705"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.590098" level="INFO">2026-04-07T09:53:16Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:16Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:16Z|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-07T09:53:16.589382" elapsed="0.000819"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:16.590732" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:16.590389" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:16.590332" elapsed="0.000563"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:16.591306" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-07T09:53:16.591012" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:16.590979" elapsed="0.000641"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:16.591742" 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-07T09:53:16.596862" elapsed="0.000334"/>
</kw>
<kw name="Open 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-07T09:53:16.597357" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:16.597680" 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-07T09:53:16.592449" elapsed="0.005383"/>
</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-07T09:53:16.105939" elapsed="0.491986"/>
</kw>
<msg time="2026-04-07T09:53:16.597983" 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-07T09:53:16.105374" elapsed="0.492676"/>
</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-07T09:53:16.104930" elapsed="0.493200"/>
</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-07T09:53:12.918940" elapsed="3.679249"/>
</kw>
<for flavor="IN">
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:16.598785" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:16.598530" elapsed="0.000657">Non-existing index or alias 'session'.</status>
</kw>
<var name="${uri}">/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.229%3A6634</var>
<status status="FAIL" start="2026-04-07T09:53:16.598401" elapsed="0.000862">Non-existing index or alias 'session'.</status>
</iter>
<var>${uri}</var>
<value>@{uris}</value>
<status status="FAIL" start="2026-04-07T09:53:16.598249" elapsed="0.001074">Non-existing index or alias 'session'.</status>
</for>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:16.600014" level="INFO">${resp} = None</msg>
<msg time="2026-04-07T09:53:16.600055" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:16.599770" elapsed="0.000567">Non-existing index or alias 'session'.</status>
</kw>
<kw name="Log Content" owner="Utils">
<msg time="2026-04-07T09:53:16.602616" level="FAIL">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</msg>
<arg>${resp.text}</arg>
<status status="FAIL" start="2026-04-07T09:53:16.600629" elapsed="0.002038">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:16.603068" level="INFO">${resp} = None</msg>
<msg time="2026-04-07T09:53:16.603108" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:16.602821" elapsed="0.000604">Non-existing index or alias 'session'.</status>
</kw>
<kw name="Log Content" owner="Utils">
<msg time="2026-04-07T09:53:16.605852" level="FAIL">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</msg>
<arg>${resp.text}</arg>
<status status="FAIL" start="2026-04-07T09:53:16.603718" elapsed="0.002166">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="FAIL" start="2026-04-07T09:53:16.599539" elapsed="0.006473">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

3) Non-existing index or alias 'session'.

4) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:16.606237" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-07T09:53:16.606160" elapsed="0.000165"/>
</kw>
<arg>${uris}</arg>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="FAIL" start="2026-04-07T09:53:12.918535" elapsed="3.687905">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

4) Non-existing index or alias 'session'.

5) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="FAIL" start="2026-04-07T09:53:12.917758" elapsed="3.688800">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

4) Non-existing index or alias 'session'.

5) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>Test suite for Connection Manager</doc>
<status status="FAIL" start="2026-04-07T09:53:09.115942" elapsed="7.490750">Suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169

Also suite teardown failed:
Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

4) Non-existing index or alias 'session'.

5) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</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-07T09:53:16.685645" 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-07T09:53:16.681819" elapsed="0.003877"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-07T09:53:16.681583" elapsed="0.004176"/>
</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-07T09:53:16.690477" 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-07T09:53:16.686807" elapsed="0.003698"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-07T09:53:16.690715" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:16.690588" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:16.690566" elapsed="0.000214"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.691272" 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-07T09:53:16.690923" elapsed="0.000391"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.691785" 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-07T09:53:16.691463" 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-07T09:53:16.692325" elapsed="0.000280"/>
</kw>
<msg time="2026-04-07T09:53:16.692722" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:16.692768" 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-07T09:53:16.691964" elapsed="0.000826"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.693310" 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-07T09:53:16.692948" elapsed="0.000387"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.694281" 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-07T09:53:16.694022" elapsed="0.000285"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.694713" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-07T09:53:16.694444" elapsed="0.000294"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.695169" 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-07T09:53:16.694885" elapsed="0.000310"/>
</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-07T09:53:16.698079" elapsed="0.000215"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.698779" level="INFO">${member_ip} = 10.30.170.169</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-07T09:53:16.698442" elapsed="0.000362"/>
</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-07T09:53:16.698946" elapsed="0.000225"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.699945" 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-07T09:53:16.699653" elapsed="0.000318"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-07T09:53:16.700015" elapsed="0.000035"/>
</return>
<msg time="2026-04-07T09:53:16.700201" 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-07T09:53:16.699357" elapsed="0.000869"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:16.700980" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.169:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7e73891ab350&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-07T09:53:16.700370" elapsed="0.000776"/>
</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-07T09:53:16.701300" 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-07T09:53:16.697517" elapsed="0.004031"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:53:16.697336" elapsed="0.004255"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-07T09:53:16.695250" elapsed="0.006373"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.702191" 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-07T09:53:16.701799" elapsed="0.000483"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.702849" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.169'}</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-07T09:53:16.702434" elapsed="0.000458"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.703416" 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-07T09:53:16.703041" elapsed="0.000416"/>
</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-07T09:53:16.693569" elapsed="0.009944"/>
</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-07T09:53:16.686463" elapsed="0.017103"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-07T09:53:16.703762" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:16.703647" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:16.703612" elapsed="0.000216"/>
</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-07T09:53:16.706737" 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-07T09:53:16.706346" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.707201" 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-07T09:53:16.706913" elapsed="0.000313"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-07T09:53:16.707269" elapsed="0.000030"/>
</return>
<msg time="2026-04-07T09:53:16.707420" 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-07T09:53:16.706034" elapsed="0.001410"/>
</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-07T09:53:16.708439" level="INFO">${member_ip} = 10.30.170.169</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-07T09:53:16.708176" elapsed="0.000289"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:16.709185" 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-07T09:53:16.709285" 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-07T09:53:16.709030" elapsed="0.000281"/>
</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-07T09:53:16.712578" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:16.711980" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:16.711960" elapsed="0.000758"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:16.713336" 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-07T09:53:16.713563" 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-07T09:53:16.712904" elapsed="0.000709"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.714535" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.169" 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-07T09:53:16.713891" elapsed="0.000765"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:16.715816" level="INFO">${conn_id} = 125</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-07T09:53:16.714915" elapsed="0.000950"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:16.717733" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:16.717912" 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-07T09:53:16.717203" elapsed="0.000752"/>
</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-07T09:53:16.718283" elapsed="0.000473"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:16.719916" level="INFO">Logging into '10.30.170.169:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:17.044997" 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  7 09:52:38 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.169
  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  7 09:53:09 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:16.719558" elapsed="0.325644"/>
</kw>
<msg time="2026-04-07T09:53:17.045298" 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-07T09:53:16.719129" elapsed="0.326365"/>
</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-07T09:53:16.716316" elapsed="0.329372"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:17.046617" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-07T09:53:17.060104" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-07T09:53:17.060481" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:17.060766" 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-07T09:53:17.046092" elapsed="0.014789"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:17.061547" elapsed="0.001251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:17.064989" 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-07T09:53:17.064108" elapsed="0.001029"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:17.065809" elapsed="0.000078"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:17.065390" elapsed="0.000608"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:17.065344" elapsed="0.000708"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:17.066483" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-07T09:53:17.066166" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:17.066142" elapsed="0.000648"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:17.066874" 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-07T09:53:17.071352" 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="PASS" start="2026-04-07T09:53:17.072414" elapsed="0.000322"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:17.072991" elapsed="0.000224"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:17.067555" elapsed="0.005729"/>
</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-07T09:53:16.711043" elapsed="0.362421"/>
</kw>
<msg time="2026-04-07T09:53:17.073522" 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-07T09:53:16.710413" elapsed="0.363164"/>
</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-07T09:53:16.709950" elapsed="0.363741"/>
</kw>
<msg time="2026-04-07T09:53:17.073736" 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-07T09:53:16.709455" elapsed="0.364330"/>
</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-07T09:53:17.076345" 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-07T09:53:17.076831" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:17.077114" elapsed="0.000096"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:17.074068" elapsed="0.003257"/>
</kw>
<msg time="2026-04-07T09:53:17.077418" 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-07T09:53:16.708687" elapsed="0.368756"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:17.077890" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:17.077611" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-07T09:53:17.077974" 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-07T09:53:16.707798" elapsed="0.370303"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:53:16.707617" elapsed="0.370522"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-07T09:53:16.707493" elapsed="0.370691"/>
</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-07T09:53:16.704036" elapsed="0.374209"/>
</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-07T09:53:17.078396" elapsed="0.000209"/>
</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-07T09:53:17.091554" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:17.091444" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:17.091424" elapsed="0.000199"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:17.091948" 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-07T09:53:17.092051" 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-07T09:53:17.091808" elapsed="0.000270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:17.092477" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:17.092222" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:17.092920" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:17.092679" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:17.093702" 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-07T09:53:17.093455" elapsed="0.000364">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-07T09:53:17.093924" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:53:17.093968" 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-07T09:53:17.093108" elapsed="0.000883"/>
</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-07T09:53:17.094291" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:17.094067" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:17.094048" elapsed="0.000341"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:17.095128" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:17.094865" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:17.095201" elapsed="0.000029"/>
</return>
<msg time="2026-04-07T09:53:17.095349" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:17.094578" elapsed="0.000795"/>
</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-07T09:53:17.095519" elapsed="0.000446"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:17.096243" level="INFO">index=128
host=10.30.170.169
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-07T09:53:17.096341" level="INFO">${karaf_connection_object} = index=128
host=10.30.170.169
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-07T09:53:17.096127" elapsed="0.000239"/>
</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-07T09:53:17.096506" elapsed="0.002057"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:17.098993" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:17.099978" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:17.098734" elapsed="0.001693">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:17.103402" elapsed="0.000384"/>
</kw>
<kw name="Open 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-07T09:53:17.103941" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:17.104220" elapsed="0.000095"/>
</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-07T09:53:17.101242" elapsed="0.003124"/>
</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-07T09:53:17.100740" elapsed="0.003670"/>
</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="FAIL" start="2026-04-07T09:53:17.091160" elapsed="0.013336">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:18.123023" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:18.122871" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:18.122846" elapsed="0.000264"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:18.123458" 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-07T09:53:18.123572" 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-07T09:53:18.123280" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:18.124078" level="INFO">{1: 128}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:18.123763" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:18.124507" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:18.124267" elapsed="0.000283"/>
</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-07T09:53:18.125090" elapsed="0.000187"/>
</kw>
<msg time="2026-04-07T09:53:18.125375" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:18.125421" level="INFO">${old_connection_index} = 128</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-07T09:53:18.124717" elapsed="0.000728"/>
</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-07T09:53:18.126255" elapsed="0.000136"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:18.127058" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:18.126885" elapsed="0.000869">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:18.126546" elapsed="0.001270"/>
</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-07T09:53:18.128321" elapsed="0.000099"/>
</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-07T09:53:18.127974" elapsed="0.000492"/>
</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-07T09:53:18.125748" elapsed="0.002761"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:18.125520" elapsed="0.003038"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:18.125501" elapsed="0.003083"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:18.129330" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:18.129064" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:18.129405" elapsed="0.000033"/>
</return>
<msg time="2026-04-07T09:53:18.129561" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:18.128799" elapsed="0.000787"/>
</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-07T09:53:18.129750" elapsed="0.000404"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:18.130524" level="INFO">index=130
host=10.30.170.169
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-07T09:53:18.130630" level="INFO">${karaf_connection_object} = index=130
host=10.30.170.169
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-07T09:53:18.130390" elapsed="0.000281"/>
</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-07T09:53:18.130810" elapsed="0.002318"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:18.133551" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:18.134758" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:18.133293" elapsed="0.001841">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:18.138016" 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-07T09:53:18.138514" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:18.138849" elapsed="0.000097"/>
</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-07T09:53:18.135928" elapsed="0.003069"/>
</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-07T09:53:18.135399" elapsed="0.003650"/>
</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="FAIL" start="2026-04-07T09:53:18.122469" elapsed="0.016661">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:19.158451" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:19.158305" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:19.158278" elapsed="0.000260"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:19.158919" 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-07T09:53:19.159034" 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-07T09:53:19.158732" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:19.159519" level="INFO">{1: 130}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:19.159207" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:19.159976" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:19.159735" elapsed="0.000284"/>
</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-07T09:53:19.160542" elapsed="0.000201"/>
</kw>
<msg time="2026-04-07T09:53:19.160842" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:19.160887" level="INFO">${old_connection_index} = 130</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-07T09:53:19.160169" 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-07T09:53:19.161722" elapsed="0.000139"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:19.162504" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:19.162331" elapsed="0.000699">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:19.162015" elapsed="0.001077"/>
</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-07T09:53:19.163614" elapsed="0.000120"/>
</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-07T09:53:19.163249" elapsed="0.000530"/>
</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-07T09:53:19.161195" elapsed="0.002627"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:19.160984" elapsed="0.002953"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:19.160965" elapsed="0.003001"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:19.164713" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:19.164431" elapsed="0.000308"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:19.164787" elapsed="0.000033"/>
</return>
<msg time="2026-04-07T09:53:19.164943" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:19.164165" elapsed="0.000802"/>
</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-07T09:53:19.165112" elapsed="0.000404"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:19.165808" level="INFO">index=132
host=10.30.170.169
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-07T09:53:19.165907" level="INFO">${karaf_connection_object} = index=132
host=10.30.170.169
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-07T09:53:19.165694" elapsed="0.000239"/>
</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-07T09:53:19.166069" elapsed="0.002362"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:19.168869" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:19.170376" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:19.168588" elapsed="0.002219">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:19.173984" elapsed="0.000409"/>
</kw>
<kw name="Open 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-07T09:53:19.174546" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:19.174847" 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-07T09:53:19.171668" elapsed="0.003325"/>
</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-07T09:53:19.171089" elapsed="0.003949"/>
</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="FAIL" start="2026-04-07T09:53:19.157903" elapsed="0.017216">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:20.193683" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:20.193517" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:20.193489" elapsed="0.000296"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.194290" 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-07T09:53:20.194443" 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-07T09:53:20.194050" elapsed="0.000429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:20.195009" level="INFO">{1: 132}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:20.194701" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:20.195439" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:20.195198" elapsed="0.000285"/>
</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-07T09:53:20.196147" elapsed="0.000241"/>
</kw>
<msg time="2026-04-07T09:53:20.196517" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:20.196576" level="INFO">${old_connection_index} = 132</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-07T09:53:20.195652" elapsed="0.000954"/>
</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-07T09:53:20.197732" elapsed="0.000157"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.198616" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:20.198419" elapsed="0.000974">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:20.198095" elapsed="0.001383"/>
</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-07T09:53:20.200028" elapsed="0.000103"/>
</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-07T09:53:20.199702" elapsed="0.000474"/>
</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-07T09:53:20.197031" elapsed="0.003188"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:20.196733" elapsed="0.003535"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:20.196706" elapsed="0.003597"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:20.201234" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:20.200878" elapsed="0.000393"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:20.201336" elapsed="0.000045"/>
</return>
<msg time="2026-04-07T09:53:20.201547" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:20.200516" elapsed="0.001066"/>
</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-07T09:53:20.201758" elapsed="0.000445"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.202496" level="INFO">index=134
host=10.30.170.169
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-07T09:53:20.202650" level="INFO">${karaf_connection_object} = index=134
host=10.30.170.169
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-07T09:53:20.202368" elapsed="0.000319"/>
</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-07T09:53:20.202877" elapsed="0.002676"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.206058" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:20.207683" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:20.205736" elapsed="0.002440">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:20.211565" elapsed="0.000378"/>
</kw>
<kw name="Open 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-07T09:53:20.212105" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:20.212501" elapsed="0.000162"/>
</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-07T09:53:20.209194" elapsed="0.003542"/>
</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-07T09:53:20.208579" elapsed="0.004221"/>
</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="FAIL" start="2026-04-07T09:53:20.193092" elapsed="0.019820">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<msg time="2026-04-07T09:53:20.213026" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</msg>
<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="FAIL" start="2026-04-07T09:53:17.079396" elapsed="3.133727">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:17.079036" elapsed="3.134155"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:53:17.078902" elapsed="3.134331"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-07T09:53:17.078746" elapsed="3.134524"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-07T09:53:16.686033" elapsed="3.527296"/>
</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-07T09:53:20.216203" elapsed="0.000075"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:20.216062" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:20.216039" 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-07T09:53:20.221388" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:20.221273" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:20.221255" elapsed="0.000200"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:53:20.222570" 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-07T09:53:20.222024" elapsed="0.000582"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:20.223185" 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-07T09:53:20.222835" elapsed="0.000376"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-07T09:53:20.223256" elapsed="0.000032"/>
</return>
<msg time="2026-04-07T09:53:20.223413" 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-07T09:53:20.221694" elapsed="0.001743"/>
</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-07T09:53:20.229250" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:20.229142" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:20.229123" 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-07T09:53:20.230796" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:20.230667" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:20.230626" elapsed="0.000237"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:20.231368" level="INFO">${karaf_connection_index} = 134</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-07T09:53:20.230999" elapsed="0.000403"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.231926" 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-07T09:53:20.231608" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.233044" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:20.232595" elapsed="0.001396">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-07T09:53:20.234165" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-07T09:53:20.234211" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</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-07T09:53:20.232109" elapsed="0.002124"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.235402" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-07T09:53:20.234899" elapsed="0.001389">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-07T09:53:20.236423" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-07T09:53:20.236468" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</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-07T09:53:20.234395" elapsed="0.002095"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-07T09:53:20.237604" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-07T09:53:20.236817" elapsed="0.000919">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot"</status>
</kw>
<status status="FAIL" start="2026-04-07T09:53:20.236565" elapsed="0.001330">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot"</status>
</branch>
<status status="FAIL" start="2026-04-07T09:53:20.236545" elapsed="0.001386">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-07T09:53:20.238090" elapsed="0.000023"/>
</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-07T09:53:20.238340" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:20.238208" elapsed="0.000275"/>
</branch>
<status status="NOT RUN" start="2026-04-07T09:53:20.238190" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-07T09:53:20.238542" elapsed="0.000015"/>
</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-07T09:53:20.240827" elapsed="0.000556"/>
</kw>
<kw name="Open 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-07T09:53:20.241734" elapsed="0.000287"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:20.242401" elapsed="0.000327"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:20.239972" 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-07T09:53:20.238903" elapsed="0.004119"/>
</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="FAIL" start="2026-04-07T09:53:20.230358" elapsed="0.012778">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_node.robot"</status>
</kw>
<msg time="2026-04-07T09:53:20.243245" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:53:20.243289" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/030__configure_exit_ovsdb_nod...</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-07T09:53:20.229507" elapsed="0.013806"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-07T09:53:20.243503" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:20.243394" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:20.243375" elapsed="0.000191"/>
</if>
<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-07T09:53:20.244536" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:20.244398" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:20.244374" elapsed="0.000247"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.245121" 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-07T09:53:20.245234" 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-07T09:53:20.244824" elapsed="0.000436"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:20.245677" level="INFO">{1: 134}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:20.245404" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:20.246130" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:20.245861" elapsed="0.000363"/>
</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-07T09:53:20.246926" elapsed="0.000289"/>
</kw>
<msg time="2026-04-07T09:53:20.247313" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:20.247358" level="INFO">${old_connection_index} = 134</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-07T09:53:20.246428" elapsed="0.000952"/>
</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-07T09:53:20.248789" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.250523" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:20.250227" elapsed="0.000759">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:20.249269" elapsed="0.001805"/>
</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-07T09:53:20.252282" elapsed="0.000198"/>
</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-07T09:53:20.251306" elapsed="0.001245"/>
</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-07T09:53:20.247776" elapsed="0.004872"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:20.247455" elapsed="0.005245"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:20.247436" elapsed="0.005289"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:20.253690" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:20.253193" elapsed="0.000533"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:20.253789" elapsed="0.000039"/>
</return>
<msg time="2026-04-07T09:53:20.253988" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:20.252920" elapsed="0.001142"/>
</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-07T09:53:20.254303" elapsed="0.000429"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.255009" level="INFO">index=137
host=10.30.170.169
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-07T09:53:20.255108" level="INFO">${karaf_connection_object} = index=137
host=10.30.170.169
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-07T09:53:20.254893" elapsed="0.000241"/>
</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-07T09:53:20.255271" elapsed="0.002447"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.258302" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:20.259829" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:20.257933" elapsed="0.002403">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:20.264028" elapsed="0.000680"/>
</kw>
<kw name="Open 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-07T09:53:20.264948" elapsed="0.000479"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:20.265718" elapsed="0.000216"/>
</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-07T09:53:20.261162" elapsed="0.004856"/>
</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-07T09:53:20.260613" elapsed="0.005452"/>
</kw>
<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="FAIL" start="2026-04-07T09:53:20.244077" elapsed="0.022073">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:20.266503" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-07T09:53:20.266577" 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="FAIL" start="2026-04-07T09:53:20.228841" elapsed="0.037857">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<msg time="2026-04-07T09:53:20.266805" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:53:20.266848" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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-07T09:53:20.223822" elapsed="0.043049"/>
</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-07T09:53:20.267238" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:20.266950" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:20.266931" elapsed="0.000413"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:53:20.223689" elapsed="0.043688"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-07T09:53:20.223493" elapsed="0.043928"/>
</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-07T09:53:20.220973" elapsed="0.046524"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-07T09:53:20.213943" elapsed="0.053631"/>
</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-07T09:53:20.213484" elapsed="0.054176"/>
</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-07T09:53:16.681285" elapsed="3.586448"/>
</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-07T09:53:20.282418" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:20.282267" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:20.282242" elapsed="0.000256"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.282863" 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-07T09:53:20.282976" 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-07T09:53:20.282687" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:20.283687" level="INFO">{1: 137}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:20.283279" elapsed="0.000470"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:20.284196" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:20.283944" 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-07T09:53:20.284814" elapsed="0.000244"/>
</kw>
<msg time="2026-04-07T09:53:20.285189" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:20.285251" level="INFO">${old_connection_index} = 137</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-07T09:53:20.284397" elapsed="0.000887"/>
</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-07T09:53:20.286225" elapsed="0.000141"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.287240" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:20.287015" elapsed="0.000817">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:20.286566" elapsed="0.001330"/>
</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-07T09:53:20.288370" elapsed="0.000099"/>
</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-07T09:53:20.288054" elapsed="0.000461"/>
</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-07T09:53:20.285712" elapsed="0.002847"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:20.285396" elapsed="0.003213"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:20.285368" elapsed="0.003299"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:20.289688" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:20.289340" elapsed="0.000377"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:20.289771" elapsed="0.000036"/>
</return>
<msg time="2026-04-07T09:53:20.289931" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:20.288960" elapsed="0.000995"/>
</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-07T09:53:20.290102" elapsed="0.000457"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.290904" level="INFO">index=139
host=10.30.170.169
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-07T09:53:20.291043" level="INFO">${karaf_connection_object} = index=139
host=10.30.170.169
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-07T09:53:20.290743" elapsed="0.000337"/>
</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-07T09:53:20.291272" elapsed="0.004017"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.295737" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:20.296847" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:20.295452" elapsed="0.001870">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:20.300547" elapsed="0.000359"/>
</kw>
<kw name="Open 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-07T09:53:20.301071" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:20.301380" elapsed="0.000100"/>
</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-07T09:53:20.298326" elapsed="0.003208"/>
</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-07T09:53:20.297707" elapsed="0.003876"/>
</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="FAIL" start="2026-04-07T09:53:20.280361" elapsed="0.021330">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<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="NOT RUN" start="2026-04-07T09:53:20.301930" elapsed="0.000022"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="NOT RUN" start="2026-04-07T09:53:20.302169" elapsed="0.000024"/>
</kw>
<status status="FAIL" start="2026-04-07T09:53:16.681003" elapsed="3.621274">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<test id="s1-s5-t1" name="Create a Topology in OVSDB node" line="26">
<doc>Create topology in OVSDB and ready it for further tests</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.302348" elapsed="0.000798">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t2" name="Connect to OVSDB Node" line="35">
<doc>Initiate the connection to OVSDB node from controller</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.303411" elapsed="0.000369">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t3" name="Get Operational Topology" line="39">
<doc>This request will fetch the operational topology from the connected OVSDB nodes</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.303946" elapsed="0.000378">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t4" name="Verify Bridge Port Not In Config DS" line="50">
<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="FAIL" start="2026-04-07T09:53:20.304487" elapsed="0.000488">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t5" name="Create bridge of already added bridge" line="61">
<doc>This will add bridge to the config datastore</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.305139" elapsed="0.000359">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t6" name="Get Config Topology with Bridge" line="69">
<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="FAIL" start="2026-04-07T09:53:20.305679" elapsed="0.000463">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t7" name="Create Port of already added port in OVSDB" line="80">
<doc>This will add port/interface to the config datastore</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.306312" elapsed="0.000426">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t8" name="Get Config Topology with Bridge and Port" line="84">
<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="FAIL" start="2026-04-07T09:53:20.306903" elapsed="0.000473">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t9" name="Modify the destination IP of Port" line="94">
<doc>This will modify the dst ip of existing port</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.307539" elapsed="0.000373">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t10" name="Get Operational Topology with modified Port" line="98">
<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-07T09:53:20.308075" elapsed="0.000437">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t11" name="Create Port and attach to a Bridge" line="110">
<doc>This request will creates port/interface and attach it to the specific bridge</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.308708" elapsed="0.000403">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t12" name="Get Operational Topology with Port" line="114">
<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-07T09:53:20.309270" elapsed="0.000487">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t13" name="Delete the Port1" line="126">
<doc>This request will delete the port node from the bridge node and data store.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.309931" elapsed="0.000354">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t14" name="Get Operational Topology after deletion of Port1" line="133">
<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-07T09:53:20.310447" elapsed="0.000574">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t15" name="Delete the Port2" line="144">
<doc>This request will delete the port node from the bridge node and data store.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.311196" elapsed="0.000362">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t16" name="Get Operational Topology after Deletion of Port2" line="151">
<doc>This request will fetch the operational topology after the Port is deleted</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.311736" elapsed="0.000425">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t17" name="Delete the Bridge" line="162">
<doc>This request will delete the bridge node from the config data store.</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.312323" elapsed="0.000415">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t18" name="Get Operational Topology after Deletion of Bridge" line="169">
<doc>This request will fetch the operational topology after the Bridge is deleted</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.312998" elapsed="0.000467">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t19" name="Delete the OVSDB Node" line="180">
<doc>This request will delete the OVSDB node</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.313740" elapsed="0.000366">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t20" name="Get Operational Topology after Deletion of OVSDB Node" line="187">
<doc>This request will fetch the operational topology after the OVSDB node is deleted</doc>
<tag>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:20.314420" elapsed="0.000547">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t21" name="Check For Bug 4756" line="202">
<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="FAIL" start="2026-04-07T09:53:20.315211" elapsed="0.000487">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s5-t22" name="Check For Bug 4794" line="210">
<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="FAIL" start="2026-04-07T09:53:20.315947" elapsed="0.000468">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<kw name="Suite Teardown" type="TEARDOWN">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:20.317688" level="INFO">@{uris} = [ /rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.229%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-07T09:53:20.317289" elapsed="0.000429"/>
</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-07T09:53:20.321157" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:20.320849" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:20.320825" elapsed="0.000416"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.321548" 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-07T09:53:20.321672" 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-07T09:53:20.321381" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:20.322222" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.229" 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-07T09:53:20.321844" elapsed="0.000424"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.322839" 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-07T09:53:20.322414" elapsed="0.000451"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:20.323701" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:20.323779" 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-07T09:53:20.323407" 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-07T09:53:20.323954" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.325204" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:20.634925" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:16 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:20.324804" elapsed="0.310275"/>
</kw>
<msg time="2026-04-07T09:53:20.635164" 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-07T09:53:20.324443" elapsed="0.310813"/>
</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-07T09:53:20.323070" elapsed="0.312294"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:20.635846" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-07T09:53:21.807329" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:21.807836" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:21.807905" 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-07T09:53:20.635589" elapsed="1.172355"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:21.808424" elapsed="0.000661"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:21.810125" 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-07T09:53:21.809564" elapsed="0.000646"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:21.810674" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:21.810360" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:21.810308" 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-07T09:53:21.811031" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-07T09:53:21.810876" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:21.810855" elapsed="0.000321"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:21.811226" 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">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:53:21.815331" elapsed="0.000385"/>
</kw>
<kw name="Open 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-07T09:53:21.815881" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:21.816214" 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-07T09:53:21.811769" elapsed="0.004619"/>
</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-07T09:53:20.320348" elapsed="1.496139"/>
</kw>
<msg time="2026-04-07T09:53:21.816549" 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-07T09:53:20.319779" elapsed="1.496862"/>
</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-07T09:53:20.319334" elapsed="1.497399"/>
</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-07T09:53:21.818797" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:21.818489" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:21.818470" elapsed="0.000408"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:21.819181" 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-07T09:53:21.819291" 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-07T09:53:21.819023" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:21.819860" 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.229" 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-07T09:53:21.819465" elapsed="0.000442"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:21.820439" 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-07T09:53:21.820055" elapsed="0.000409"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:21.821341" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:21.821416" 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-07T09:53:21.821033" 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-07T09:53:21.821586" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:21.822934" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:22.161148" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:20 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:21.822419" elapsed="0.338998"/>
</kw>
<msg time="2026-04-07T09:53:22.161539" 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-07T09:53:21.822076" elapsed="0.339620"/>
</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-07T09:53:21.820693" elapsed="0.341178"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:22.162710" 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-07T09:53:22.195610" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-07T09:53:22.195923" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:22.196023" 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-07T09:53:22.162238" elapsed="0.033836"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:22.196470" elapsed="0.000556"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:22.198250" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:22.197490" elapsed="0.000852"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:22.198922" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:22.198553" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:22.198480" elapsed="0.000624"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:22.199464" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-07T09:53:22.199223" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:22.199190" elapsed="0.000493"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:22.199762" 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-07T09:53:22.205851" elapsed="0.000481"/>
</kw>
<kw name="Open 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-07T09:53:22.206556" elapsed="0.000268"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:22.207017" elapsed="0.000135"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:22.200525" elapsed="0.006700"/>
</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-07T09:53:21.817999" elapsed="0.389358"/>
</kw>
<msg time="2026-04-07T09:53:22.207435" 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-07T09:53:21.817375" elapsed="0.390152"/>
</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-07T09:53:21.816917" elapsed="0.390753"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-07T09:53:20.319036" elapsed="1.888723"/>
</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-07T09:53:22.210653" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:22.210249" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:22.210222" elapsed="0.000547"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:22.211182" 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-07T09:53:22.211329" 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-07T09:53:22.210975" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:22.212121" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.229" 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-07T09:53:22.211570" elapsed="0.000698"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:22.213083" 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-07T09:53:22.212531" elapsed="0.000587"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:22.214080" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:22.214157" 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-07T09:53:22.213772" elapsed="0.000408"/>
</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-07T09:53:22.214330" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:22.215497" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:22.599118" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:22 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:22.215181" elapsed="0.384162"/>
</kw>
<msg time="2026-04-07T09:53:22.599446" 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-07T09:53:22.214834" elapsed="0.384733"/>
</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-07T09:53:22.213411" elapsed="0.386324"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:22.600352" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-07T09:53:22.623219" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:22.623528" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:22.623674" 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-07T09:53:22.600038" elapsed="0.023696"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:22.624162" elapsed="0.000570"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:22.625908" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:22.625170" 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-07T09:53:22.626733" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:22.626213" elapsed="0.000653"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:22.626152" elapsed="0.000771"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:22.627314" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-07T09:53:22.627053" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:22.627017" elapsed="0.000457"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:22.627521" 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">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:53:22.631364" elapsed="0.000490"/>
</kw>
<kw name="Open 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-07T09:53:22.632073" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:22.632497" elapsed="0.000153"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:22.628040" elapsed="0.004687"/>
</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-07T09:53:22.209557" elapsed="0.423297"/>
</kw>
<msg time="2026-04-07T09:53:22.632932" 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-07T09:53:22.208751" elapsed="0.424269"/>
</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-07T09:53:22.208021" elapsed="0.425106"/>
</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-07T09:53:22.635873" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:22.635588" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:22.635569" elapsed="0.000385"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:22.636239" 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-07T09:53:22.636340" 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-07T09:53:22.636099" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:22.636898" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.229" 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-07T09:53:22.636505" elapsed="0.000439"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:22.637478" 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-07T09:53:22.637113" elapsed="0.000390"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:22.638382" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:22.638459" 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-07T09:53:22.638065" 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-07T09:53:22.638644" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:22.639789" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:22.985449" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:22 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:22.639458" elapsed="0.346145"/>
</kw>
<msg time="2026-04-07T09:53:22.985707" 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-07T09:53:22.639118" elapsed="0.346686"/>
</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-07T09:53:22.637732" elapsed="0.348192"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:22.986444" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-07T09:53:23.120745" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:23.121137" level="INFO">${stdout} =  * Exiting ovs-vswitchd (4100)
 * Exiting ovsdb-server (4083)</msg>
<msg time="2026-04-07T09:53:23.121235" 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-07T09:53:22.986174" elapsed="0.135113"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:23.121799" elapsed="0.000514"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:23.123386" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:23.122743" 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-07T09:53:23.123994" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:23.123691" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:23.123603" 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-07T09:53:23.124538" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-07T09:53:23.124270" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:23.124237" elapsed="0.000528"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:23.124840" 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-07T09:53:23.130083" 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-07T09:53:23.130567" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:23.130965" 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-07T09:53:23.125527" elapsed="0.005589"/>
</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-07T09:53:22.634976" elapsed="0.496233"/>
</kw>
<msg time="2026-04-07T09:53:23.131267" 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-07T09:53:22.634134" elapsed="0.497199"/>
</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-07T09:53:22.633491" elapsed="0.497921"/>
</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-07T09:53:23.133399" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:23.133134" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:23.133115" elapsed="0.000365"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:23.133776" 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-07T09:53:23.133878" 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-07T09:53:23.133619" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:23.134414" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.229" 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-07T09:53:23.134043" elapsed="0.000415"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:23.134980" 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-07T09:53:23.134600" elapsed="0.000405"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:23.135837" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:23.135911" 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-07T09:53:23.135539" 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-07T09:53:23.136092" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:23.137308" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:23.471705" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:22 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:23.136995" elapsed="0.334880"/>
</kw>
<msg time="2026-04-07T09:53:23.471959" 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-07T09:53:23.136626" elapsed="0.335435"/>
</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-07T09:53:23.135209" elapsed="0.336968"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:23.472686" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-07T09:53:23.495363" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:23.495613" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:23.495745" 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-07T09:53:23.472414" elapsed="0.023382"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:23.496136" elapsed="0.000445"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:23.497770" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:23.497007" 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-07T09:53:23.498422" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:23.498126" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:23.498067" 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-07T09:53:23.498972" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-07T09:53:23.498736" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:23.498700" elapsed="0.000456"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:23.499228" 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-07T09:53:23.504923" elapsed="0.000696"/>
</kw>
<kw name="Open 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-07T09:53:23.506038" elapsed="0.000342"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:23.506558" elapsed="0.000112"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:23.499941" elapsed="0.006782"/>
</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-07T09:53:23.132654" elapsed="0.374159"/>
</kw>
<msg time="2026-04-07T09:53:23.506865" 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-07T09:53:23.132064" elapsed="0.374861"/>
</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-07T09:53:23.131603" elapsed="0.375400"/>
</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-07T09:53:23.508968" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:23.508712" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:23.508693" elapsed="0.000355"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:23.509321" 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-07T09:53:23.509421" 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-07T09:53:23.509184" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:23.509993" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.229" 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-07T09:53:23.509589" elapsed="0.000450"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:23.510552" 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-07T09:53:23.510182" elapsed="0.000395"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:23.511413" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:23.511487" 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-07T09:53:23.511133" 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-07T09:53:23.511669" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:23.512984" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:23.841794" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:23 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:23.512475" elapsed="0.329488"/>
</kw>
<msg time="2026-04-07T09:53:23.842135" 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-07T09:53:23.512137" elapsed="0.330096"/>
</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-07T09:53:23.510801" elapsed="0.331550"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:23.842875" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-07T09:53:23.946973" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:23.947251" 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-07T09:53:23.947355" level="INFO">${stderr} = 2026-04-07T09:53:23Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:23Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:23Z|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-07T09:53:23.842592" elapsed="0.104816"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:23.947870" elapsed="0.000510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:23.949447" level="INFO">2026-04-07T09:53:23Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:23Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:23Z|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-07T09:53:23.948807" elapsed="0.000740"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:23.950059" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:23.949759" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:23.949701" elapsed="0.000518"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:23.950562" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-07T09:53:23.950333" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:23.950301" elapsed="0.000482"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:23.950857" 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-07T09:53:23.956528" elapsed="0.000359"/>
</kw>
<kw name="Open 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-07T09:53:23.957043" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:23.957344" elapsed="0.000095"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:23.951535" elapsed="0.005956"/>
</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-07T09:53:23.508222" elapsed="0.449358"/>
</kw>
<msg time="2026-04-07T09:53:23.957651" 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-07T09:53:23.507649" elapsed="0.450068"/>
</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-07T09:53:23.507192" elapsed="0.450604"/>
</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-07T09:53:20.318709" elapsed="3.639146"/>
</kw>
<for flavor="IN">
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:23.958433" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:23.958194" elapsed="0.000689">Non-existing index or alias 'session'.</status>
</kw>
<var name="${uri}">/rests/data/network-topology:network-topology/topology=ovsdb%3A1/node=ovsdb%3A%2F%2F10.30.171.229%3A6634</var>
<status status="FAIL" start="2026-04-07T09:53:23.958064" elapsed="0.000895">Non-existing index or alias 'session'.</status>
</iter>
<var>${uri}</var>
<value>@{uris}</value>
<status status="FAIL" start="2026-04-07T09:53:23.957914" elapsed="0.001105">Non-existing index or alias 'session'.</status>
</for>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:23.959695" level="INFO">${resp} = None</msg>
<msg time="2026-04-07T09:53:23.959747" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:23.959440" elapsed="0.000594">Non-existing index or alias 'session'.</status>
</kw>
<kw name="Log Content" owner="Utils">
<msg time="2026-04-07T09:53:23.962513" level="FAIL">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</msg>
<arg>${resp.text}</arg>
<status status="FAIL" start="2026-04-07T09:53:23.960325" elapsed="0.002222">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:23.963011" level="INFO">${resp} = None</msg>
<msg time="2026-04-07T09:53:23.963051" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:23.962715" elapsed="0.000616">Non-existing index or alias 'session'.</status>
</kw>
<kw name="Log Content" owner="Utils">
<msg time="2026-04-07T09:53:23.965586" level="FAIL">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</msg>
<arg>${resp.text}</arg>
<status status="FAIL" start="2026-04-07T09:53:23.963602" elapsed="0.002016">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="FAIL" start="2026-04-07T09:53:23.959233" elapsed="0.006529">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

3) Non-existing index or alias 'session'.

4) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:23.965987" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-07T09:53:23.965910" elapsed="0.000154"/>
</kw>
<arg>${uris}</arg>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="FAIL" start="2026-04-07T09:53:20.317962" elapsed="3.648216">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

4) Non-existing index or alias 'session'.

5) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="FAIL" start="2026-04-07T09:53:20.316990" elapsed="3.649307">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

4) Non-existing index or alias 'session'.

5) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>Test suite for Connection Manager</doc>
<status status="FAIL" start="2026-04-07T09:53:16.608035" elapsed="7.358362">Suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169

Also suite teardown failed:
Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

4) Non-existing index or alias 'session'.

5) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</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-07T09:53:24.048513" 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-07T09:53:24.044690" elapsed="0.003872"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-07T09:53:24.044434" elapsed="0.004195"/>
</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-07T09:53:24.053118" 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-07T09:53:24.049703" elapsed="0.003442"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-07T09:53:24.053339" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:24.053227" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:24.053204" elapsed="0.000198"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.053923" 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-07T09:53:24.053552" elapsed="0.000412"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.054419" 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-07T09:53:24.054116" elapsed="0.000327"/>
</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-07T09:53:24.054945" elapsed="0.000277"/>
</kw>
<msg time="2026-04-07T09:53:24.055318" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:24.055364" 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-07T09:53:24.054599" elapsed="0.000787"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.055930" 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-07T09:53:24.055546" elapsed="0.000409"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.056941" 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-07T09:53:24.056682" elapsed="0.000284"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.057357" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-07T09:53:24.057105" elapsed="0.000278"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.057835" 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-07T09:53:24.057530" elapsed="0.000330"/>
</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-07T09:53:24.060912" elapsed="0.000212"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.061663" level="INFO">${member_ip} = 10.30.170.169</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-07T09:53:24.061273" elapsed="0.000418"/>
</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-07T09:53:24.061840" elapsed="0.000225"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.062848" 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-07T09:53:24.062532" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-07T09:53:24.062918" elapsed="0.000036"/>
</return>
<msg time="2026-04-07T09:53:24.063074" 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-07T09:53:24.062250" elapsed="0.000848"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:24.063691" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.169:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7e7383532150&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-07T09:53:24.063246" elapsed="0.000589"/>
</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-07T09:53:24.063989" elapsed="0.000208"/>
</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-07T09:53:24.060351" elapsed="0.003908"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:53:24.060163" elapsed="0.004138"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-07T09:53:24.057916" elapsed="0.006417"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.064897" 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-07T09:53:24.064492" elapsed="0.000447"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.065475" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.169'}</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-07T09:53:24.065090" elapsed="0.000426"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.066057" 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-07T09:53:24.065683" elapsed="0.000414"/>
</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-07T09:53:24.056230" elapsed="0.009921"/>
</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-07T09:53:24.049346" elapsed="0.016859"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-07T09:53:24.066391" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:24.066269" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:24.066250" 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-07T09:53:24.069424" 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-07T09:53:24.069047" elapsed="0.000403"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.069905" 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-07T09:53:24.069599" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-07T09:53:24.069972" elapsed="0.000029"/>
</return>
<msg time="2026-04-07T09:53:24.070122" 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-07T09:53:24.068733" elapsed="0.001413"/>
</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-07T09:53:24.071119" level="INFO">${member_ip} = 10.30.170.169</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-07T09:53:24.070859" elapsed="0.000285"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:24.071885" 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-07T09:53:24.071988" 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-07T09:53:24.071729" elapsed="0.000286"/>
</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-07T09:53:24.077398" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:24.076846" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:24.076826" elapsed="0.000695"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:24.078161" 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-07T09:53:24.078388" 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-07T09:53:24.077734" elapsed="0.000704"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.079356" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.169" 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-07T09:53:24.078713" elapsed="0.000747"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:24.080622" level="INFO">${conn_id} = 153</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-07T09:53:24.079735" elapsed="0.000953"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.082373" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:24.082543" 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-07T09:53:24.082030" 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-07T09:53:24.082929" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:24.084530" level="INFO">Logging into '10.30.170.169:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:24.407386" 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  7 09:52:38 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.170.169
  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  7 09:53:16 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:24.084171" elapsed="0.323402"/>
</kw>
<msg time="2026-04-07T09:53:24.407693" 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-07T09:53:24.083738" elapsed="0.324139"/>
</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-07T09:53:24.081113" elapsed="0.326926"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:24.408958" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-07T09:53:24.421754" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-07T09:53:24.422004" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:24.422147" 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-07T09:53:24.408424" elapsed="0.013791"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:24.422874" elapsed="0.001204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.426621" 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-07T09:53:24.425308" elapsed="0.001604"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:24.428024" elapsed="0.000134"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:24.427375" elapsed="0.000956"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:24.427301" elapsed="0.001113"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:24.429126" elapsed="0.000139"/>
</return>
<status status="PASS" start="2026-04-07T09:53:24.428591" elapsed="0.000850"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:24.428554" elapsed="0.001026"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:24.429748" 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">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:53:24.433610" elapsed="0.000486"/>
</kw>
<kw name="Open 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-07T09:53:24.434431" elapsed="0.000424"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:24.435109" 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-07T09:53:24.430630" elapsed="0.004771"/>
</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-07T09:53:24.075869" elapsed="0.359706"/>
</kw>
<msg time="2026-04-07T09:53:24.435648" 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-07T09:53:24.075242" elapsed="0.360462"/>
</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-07T09:53:24.072722" elapsed="0.363062"/>
</kw>
<msg time="2026-04-07T09:53:24.435824" 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-07T09:53:24.072222" elapsed="0.363648"/>
</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-07T09:53:24.438424" 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-07T09:53:24.438965" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:24.439249" elapsed="0.000093"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:24.436150" elapsed="0.003245"/>
</kw>
<msg time="2026-04-07T09:53:24.439487" 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-07T09:53:24.071348" elapsed="0.368164"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.439974" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:24.439727" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-07T09:53:24.440056" elapsed="0.000031"/>
</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-07T09:53:24.070491" elapsed="0.369689"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:53:24.070317" elapsed="0.369900"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-07T09:53:24.070195" elapsed="0.370063"/>
</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-07T09:53:24.066687" elapsed="0.373629"/>
</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-07T09:53:24.440462" elapsed="0.000223"/>
</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-07T09:53:24.453292" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:24.453181" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:24.453161" elapsed="0.000198"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:24.453716" 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-07T09:53:24.453821" 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-07T09:53:24.453513" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.454248" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:24.453994" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:24.454688" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:24.454434" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:24.455450" 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-07T09:53:24.455222" elapsed="0.000345">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-07T09:53:24.455691" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:53:24.455737" 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-07T09:53:24.454877" elapsed="0.000882"/>
</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-07T09:53:24.456104" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:24.455881" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:24.455861" elapsed="0.000341"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:24.456945" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:24.456680" elapsed="0.000290"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:24.457016" elapsed="0.000030"/>
</return>
<msg time="2026-04-07T09:53:24.457164" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:24.456396" elapsed="0.000792"/>
</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-07T09:53:24.457335" elapsed="0.000444"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:24.458060" level="INFO">index=156
host=10.30.170.169
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-07T09:53:24.458158" level="INFO">${karaf_connection_object} = index=156
host=10.30.170.169
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-07T09:53:24.457941" elapsed="0.000243"/>
</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-07T09:53:24.458324" elapsed="0.002222"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:24.460980" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:24.462224" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:24.460722" elapsed="0.001995">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:24.465752" elapsed="0.000330"/>
</kw>
<kw name="Open 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-07T09:53:24.466236" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:24.466515" elapsed="0.000094"/>
</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-07T09:53:24.463484" elapsed="0.003203"/>
</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-07T09:53:24.462986" elapsed="0.003747"/>
</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="FAIL" start="2026-04-07T09:53:24.452901" elapsed="0.013915">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:25.487056" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:25.486871" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:25.486836" elapsed="0.000334"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:25.487681" 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-07T09:53:25.487836" 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-07T09:53:25.487419" elapsed="0.000454"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:25.488463" level="INFO">{1: 156}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:25.488084" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:25.489017" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:25.488725" elapsed="0.000367"/>
</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-07T09:53:25.489820" elapsed="0.000232"/>
</kw>
<msg time="2026-04-07T09:53:25.490171" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:25.490225" level="INFO">${old_connection_index} = 156</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-07T09:53:25.489307" elapsed="0.000945"/>
</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-07T09:53:25.491342" elapsed="0.000143"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:25.492320" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:25.492095" elapsed="0.000779">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:25.491684" elapsed="0.001254"/>
</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-07T09:53:25.493481" elapsed="0.000101"/>
</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-07T09:53:25.493148" elapsed="0.000494"/>
</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-07T09:53:25.490738" elapsed="0.002952"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:25.490446" elapsed="0.003293"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:25.490420" elapsed="0.003346"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:25.494532" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:25.494263" elapsed="0.000296"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:25.494607" elapsed="0.000051"/>
</return>
<msg time="2026-04-07T09:53:25.494786" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:25.493984" elapsed="0.000827"/>
</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-07T09:53:25.494984" elapsed="0.000413"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:25.495703" level="INFO">index=158
host=10.30.170.169
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-07T09:53:25.495804" level="INFO">${karaf_connection_object} = index=158
host=10.30.170.169
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-07T09:53:25.495564" elapsed="0.000267"/>
</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-07T09:53:25.495972" elapsed="0.002346"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:25.498759" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:25.500230" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:25.498478" elapsed="0.002183">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:25.503604" elapsed="0.000386"/>
</kw>
<kw name="Open 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-07T09:53:25.504148" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:25.504437" 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-07T09:53:25.501536" elapsed="0.003048"/>
</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-07T09:53:25.500960" elapsed="0.003690"/>
</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="FAIL" start="2026-04-07T09:53:25.486350" elapsed="0.018387">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:26.523674" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:26.523503" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:26.523474" elapsed="0.000295"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:26.524183" 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-07T09:53:26.524305" 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-07T09:53:26.523960" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:26.524908" level="INFO">{1: 158}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:26.524580" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:26.525354" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:26.525104" elapsed="0.000295"/>
</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-07T09:53:26.525967" elapsed="0.000190"/>
</kw>
<msg time="2026-04-07T09:53:26.526259" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:26.526305" level="INFO">${old_connection_index} = 158</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-07T09:53:26.525558" elapsed="0.000770"/>
</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-07T09:53:26.527152" elapsed="0.000140"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:26.527972" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:26.527789" elapsed="0.000741">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:26.527450" elapsed="0.001145"/>
</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-07T09:53:26.529093" elapsed="0.000100"/>
</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-07T09:53:26.528774" elapsed="0.000465"/>
</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-07T09:53:26.526624" elapsed="0.002660"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:26.526404" elapsed="0.002929"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:26.526385" elapsed="0.002974"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:26.530118" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:26.529853" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:26.530192" elapsed="0.000033"/>
</return>
<msg time="2026-04-07T09:53:26.530350" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:26.529562" elapsed="0.000812"/>
</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-07T09:53:26.530521" elapsed="0.000425"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:26.531226" level="INFO">index=160
host=10.30.170.169
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-07T09:53:26.531326" level="INFO">${karaf_connection_object} = index=160
host=10.30.170.169
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-07T09:53:26.531109" 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-07T09:53:26.531493" elapsed="0.002291"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:26.534202" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:26.535516" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:26.533941" elapsed="0.001976">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:26.538787" elapsed="0.000356"/>
</kw>
<kw name="Open 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-07T09:53:26.539298" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:26.539582" elapsed="0.000116"/>
</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-07T09:53:26.536756" elapsed="0.002994"/>
</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-07T09:53:26.536221" elapsed="0.003574"/>
</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="FAIL" start="2026-04-07T09:53:26.523073" elapsed="0.016805">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:27.560500" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:27.560263" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:27.560217" elapsed="0.000455"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.561294" 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-07T09:53:27.561478" 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-07T09:53:27.560970" elapsed="0.000546"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:27.562264" level="INFO">{1: 160}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:27.561771" elapsed="0.000558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:27.562914" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:27.562534" elapsed="0.000542"/>
</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-07T09:53:27.563797" elapsed="0.000205"/>
</kw>
<msg time="2026-04-07T09:53:27.564110" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:27.564156" level="INFO">${old_connection_index} = 160</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-07T09:53:27.563320" elapsed="0.000858"/>
</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-07T09:53:27.565030" elapsed="0.000146"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.565929" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:27.565702" elapsed="0.000873">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:27.565348" elapsed="0.001313"/>
</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-07T09:53:27.567196" elapsed="0.000112"/>
</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-07T09:53:27.566828" elapsed="0.000528"/>
</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-07T09:53:27.564484" elapsed="0.002918"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:27.564255" elapsed="0.003196"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:27.564236" elapsed="0.003240"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:27.568257" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:27.567986" elapsed="0.000297"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:27.568331" elapsed="0.000041"/>
</return>
<msg time="2026-04-07T09:53:27.568502" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:27.567710" elapsed="0.000817"/>
</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-07T09:53:27.568702" elapsed="0.000443"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.569431" level="INFO">index=162
host=10.30.170.169
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-07T09:53:27.569531" level="INFO">${karaf_connection_object} = index=162
host=10.30.170.169
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-07T09:53:27.569314" elapsed="0.000243"/>
</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-07T09:53:27.569731" elapsed="0.002416"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.572576" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:27.573818" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:27.572307" elapsed="0.001896">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:27.577119" elapsed="0.000393"/>
</kw>
<kw name="Open 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-07T09:53:27.577767" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:27.578065" 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-07T09:53:27.575072" elapsed="0.003141"/>
</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-07T09:53:27.574496" elapsed="0.003762"/>
</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="FAIL" start="2026-04-07T09:53:27.559544" elapsed="0.018802">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<msg time="2026-04-07T09:53:27.578443" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</msg>
<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="FAIL" start="2026-04-07T09:53:24.441382" elapsed="3.137155">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:24.441026" elapsed="3.137579"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:53:24.440893" elapsed="3.137775"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-07T09:53:24.440743" elapsed="3.137972"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-07T09:53:24.048918" elapsed="3.529863"/>
</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-07T09:53:27.581597" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:27.581469" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:27.581446" 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-07T09:53:27.586068" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:27.585960" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:27.585942" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-07T09:53:27.587196" 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-07T09:53:27.586715" elapsed="0.000509"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-07T09:53:27.587691" 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-07T09:53:27.587378" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-07T09:53:27.587759" elapsed="0.000036"/>
</return>
<msg time="2026-04-07T09:53:27.587921" 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-07T09:53:27.586368" elapsed="0.001577"/>
</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-07T09:53:27.593223" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:27.593100" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:27.593076" elapsed="0.000215"/>
</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-07T09:53:27.594596" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:27.594467" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:27.594448" elapsed="0.000242"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:27.595204" level="INFO">${karaf_connection_index} = 162</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-07T09:53:27.594831" elapsed="0.000400"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.595621" 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-07T09:53:27.595390" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.596781" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:27.596302" elapsed="0.001242">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-07T09:53:27.597704" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-07T09:53:27.597758" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</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-07T09:53:27.595816" elapsed="0.001966"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.598941" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-07T09:53:27.598511" elapsed="0.001266">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-07T09:53:27.599912" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-07T09:53:27.599956" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</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-07T09:53:27.598013" elapsed="0.001965"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-07T09:53:27.600976" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-07T09:53:27.600288" elapsed="0.000771">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot"</status>
</kw>
<status status="FAIL" start="2026-04-07T09:53:27.600053" elapsed="0.001148">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot"</status>
</branch>
<status status="FAIL" start="2026-04-07T09:53:27.600034" elapsed="0.001202">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-07T09:53:27.601391" elapsed="0.000022"/>
</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-07T09:53:27.601605" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:27.601474" elapsed="0.000295"/>
</branch>
<status status="NOT RUN" start="2026-04-07T09:53:27.601458" elapsed="0.000337"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-07T09:53:27.601827" elapsed="0.000015"/>
</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-07T09:53:27.603837" elapsed="0.000442"/>
</kw>
<kw name="Open 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-07T09:53:27.604605" elapsed="0.000316"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:27.605242" elapsed="0.000236"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:27.602970" elapsed="0.002594"/>
</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-07T09:53:27.602092" 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="FAIL" start="2026-04-07T09:53:27.594178" elapsed="0.011624">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot"</status>
</kw>
<msg time="2026-04-07T09:53:27.605909" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:53:27.605951" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/ovsdb-csit-1node-upstream-southbound-all-vanadium/test/csit/suites/ovsdb/Southbound_Domain/Bug_Validation.robot"</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-07T09:53:27.593466" elapsed="0.012508"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-07T09:53:27.606157" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:27.606050" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:27.606031" elapsed="0.000190"/>
</if>
<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-07T09:53:27.606977" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:27.606872" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:27.606855" elapsed="0.000199"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.607517" 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-07T09:53:27.607624" 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-07T09:53:27.607204" elapsed="0.000544"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:27.608158" level="INFO">{1: 162}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:27.607899" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:27.608583" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:27.608345" elapsed="0.000283"/>
</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-07T09:53:27.609139" elapsed="0.000274"/>
</kw>
<msg time="2026-04-07T09:53:27.609509" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:27.609590" level="INFO">${old_connection_index} = 162</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-07T09:53:27.608791" elapsed="0.000822"/>
</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-07T09:53:27.610726" elapsed="0.000257"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.612323" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:27.612072" elapsed="0.000701">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:27.611230" elapsed="0.001633"/>
</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-07T09:53:27.613795" elapsed="0.000189"/>
</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-07T09:53:27.613092" elapsed="0.000961"/>
</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-07T09:53:27.609937" elapsed="0.004198"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:27.609718" elapsed="0.004467"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:27.609693" elapsed="0.004516"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:27.615150" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:27.614688" elapsed="0.000489"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:27.615224" elapsed="0.000030"/>
</return>
<msg time="2026-04-07T09:53:27.615375" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:27.614404" elapsed="0.000995"/>
</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-07T09:53:27.615550" elapsed="0.000497"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.616321" level="INFO">index=165
host=10.30.170.169
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-07T09:53:27.616422" level="INFO">${karaf_connection_object} = index=165
host=10.30.170.169
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-07T09:53:27.616206" elapsed="0.000241"/>
</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-07T09:53:27.616588" elapsed="0.002179"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.619218" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:27.620322" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:27.618927" elapsed="0.001796">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:27.623944" elapsed="0.000620"/>
</kw>
<kw name="Open 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-07T09:53:27.624887" elapsed="0.000400"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:27.625490" elapsed="0.000206"/>
</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-07T09:53:27.621482" elapsed="0.004297"/>
</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-07T09:53:27.620984" elapsed="0.004840"/>
</kw>
<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="FAIL" start="2026-04-07T09:53:27.606614" elapsed="0.019292">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:27.626229" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-07T09:53:27.626301" 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="FAIL" start="2026-04-07T09:53:27.592795" elapsed="0.033611">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<msg time="2026-04-07T09:53:27.626548" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-07T09:53:27.626591" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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-07T09:53:27.588335" elapsed="0.038279"/>
</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-07T09:53:27.626959" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:27.626710" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:27.626690" elapsed="0.000346"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-07T09:53:27.588198" elapsed="0.038861"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-07T09:53:27.588008" elapsed="0.039112"/>
</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-07T09:53:27.585668" elapsed="0.041514"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-07T09:53:27.579513" elapsed="0.047723"/>
</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-07T09:53:27.578932" elapsed="0.048344"/>
</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-07T09:53:24.044117" elapsed="3.583207"/>
</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-07T09:53:27.640391" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:27.640281" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:27.640262" elapsed="0.000200"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.640760" 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-07T09:53:27.640863" 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-07T09:53:27.640609" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:27.641297" level="INFO">{1: 165}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:27.641039" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:27.641737" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:27.641482" elapsed="0.000297"/>
</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-07T09:53:27.642277" elapsed="0.000178"/>
</kw>
<msg time="2026-04-07T09:53:27.642549" level="INFO">${status} = PASS</msg>
<msg time="2026-04-07T09:53:27.642595" level="INFO">${old_connection_index} = 165</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-07T09:53:27.641930" elapsed="0.000686"/>
</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-07T09:53:27.643453" elapsed="0.000136"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.644226" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-07T09:53:27.644079" elapsed="0.000612">Cannot open session, you need to establish a connection first.</status>
</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-07T09:53:27.643762" elapsed="0.000991"/>
</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-07T09:53:27.645228" elapsed="0.000094"/>
</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-07T09:53:27.644911" elapsed="0.000455"/>
</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-07T09:53:27.642922" elapsed="0.002487"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:27.642710" elapsed="0.002747"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:27.642690" elapsed="0.002792"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-07T09:53:27.646222" level="INFO">${ip_address} = 10.30.170.169</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-07T09:53:27.645960" elapsed="0.000288"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-07T09:53:27.646294" elapsed="0.000030"/>
</return>
<msg time="2026-04-07T09:53:27.646443" level="INFO">${odl_ip} = 10.30.170.169</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-07T09:53:27.645696" elapsed="0.000771"/>
</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-07T09:53:27.646618" elapsed="0.000406"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.647363" level="INFO">index=167
host=10.30.170.169
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-07T09:53:27.647471" level="INFO">${karaf_connection_object} = index=167
host=10.30.170.169
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-07T09:53:27.647246" elapsed="0.000253"/>
</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-07T09:53:27.647657" elapsed="0.002222"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.650289" level="INFO">Logging into '10.30.170.169:8101' as 'karaf'.</msg>
<msg time="2026-04-07T09:53:27.651186" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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="FAIL" start="2026-04-07T09:53:27.650034" elapsed="0.001525">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</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-07T09:53:27.654508" elapsed="0.000324"/>
</kw>
<kw name="Open 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-07T09:53:27.654985" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:27.655307" elapsed="0.000101"/>
</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-07T09:53:27.652344" elapsed="0.003117"/>
</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-07T09:53:27.651847" elapsed="0.003658"/>
</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="FAIL" start="2026-04-07T09:53:27.638650" elapsed="0.016931">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<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="NOT RUN" start="2026-04-07T09:53:27.655750" elapsed="0.000022"/>
</kw>
<kw name="Clean All Ovs Nodes">
<status status="NOT RUN" start="2026-04-07T09:53:27.655930" elapsed="0.000022"/>
</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-07T09:53:27.656130" elapsed="0.000024"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<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="NOT RUN" start="2026-04-07T09:53:27.656330" elapsed="0.000021"/>
</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-07T09:53:27.656532" elapsed="0.000023"/>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="NOT RUN" start="2026-04-07T09:53:27.656778" elapsed="0.000023"/>
</kw>
<status status="FAIL" start="2026-04-07T09:53:24.043802" elapsed="3.613082">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</kw>
<test id="s1-s6-t1" name="Bug 7414 Same Endpoint Name" line="36">
<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>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:27.656988" elapsed="0.001198">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s6-t2" name="Bug 7414 Different Endpoint Name" line="71">
<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>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:27.658497" elapsed="0.001327">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s6-t3" name="Bug 5221" line="109">
<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>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:27.660091" elapsed="0.000560">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s6-t4" name="Bug 5177" line="160">
<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>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:27.660914" elapsed="0.000673">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s6-t5" name="Bug 4794" line="191">
<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>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:27.661858" elapsed="0.000577">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s6-t6" name="Bug 8280" line="213">
<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>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:27.662748" elapsed="0.001051">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</status>
</test>
<test id="s1-s6-t7" name="Bug 7160" line="242">
<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>southbound</tag>
<status status="FAIL" start="2026-04-07T09:53:27.664064" elapsed="0.000745">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169</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-07T09:53:27.668447" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:27.668177" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:27.668157" elapsed="0.000371"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.668817" 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-07T09:53:27.668918" 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-07T09:53:27.668685" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:27.669461" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.171.229" 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-07T09:53:27.669086" elapsed="0.000420"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.670025" level="INFO">${conn_id} = 169</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-07T09:53:27.669670" elapsed="0.000381"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:27.670895" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:27.670971" 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-07T09:53:27.670596" 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-07T09:53:27.671142" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:27.672426" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:28.005153" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:23 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:27.672042" elapsed="0.333462"/>
</kw>
<msg time="2026-04-07T09:53:28.005618" 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-07T09:53:27.671693" elapsed="0.334075"/>
</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-07T09:53:27.670261" elapsed="0.335654"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:28.006595" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-07T09:53:29.156478" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:29.156993" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:29.157115" 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-07T09:53:28.006235" elapsed="1.150940"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:29.157732" elapsed="0.000632"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:29.159764" 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-07T09:53:29.159026" elapsed="0.000863"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:29.160411" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:29.160080" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:29.160020" 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-07T09:53:29.160963" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-07T09:53:29.160726" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:29.160691" elapsed="0.000478"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:29.161260" 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-07T09:53:29.166357" elapsed="0.000828"/>
</kw>
<kw name="Open 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-07T09:53:29.167474" elapsed="0.000320"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:29.168013" elapsed="0.000146"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:29.162052" elapsed="0.006188"/>
</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-07T09:53:27.667505" elapsed="1.500876"/>
</kw>
<msg time="2026-04-07T09:53:29.168472" 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-07T09:53:27.666901" elapsed="1.501676"/>
</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-07T09:53:27.666437" elapsed="1.502284"/>
</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-07T09:53:29.171715" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:29.171390" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:29.171358" elapsed="0.000443"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:29.172118" 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-07T09:53:29.172230" 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-07T09:53:29.171948" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:29.172805" 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.229" 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-07T09:53:29.172402" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:29.173388" 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-07T09:53:29.173006" elapsed="0.000409"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:29.174323" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:29.174401" 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-07T09:53:29.174019" 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-07T09:53:29.174578" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:29.175956" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:29.501835" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:27 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:29.175475" elapsed="0.326769"/>
</kw>
<msg time="2026-04-07T09:53:29.502354" 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-07T09:53:29.175115" elapsed="0.327364"/>
</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-07T09:53:29.173641" elapsed="0.328979"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:29.503275" 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-07T09:53:29.536738" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-07T09:53:29.537127" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:29.537176" 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-07T09:53:29.502950" elapsed="0.034254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:29.537592" elapsed="0.002960"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:29.541310" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:29.540880" elapsed="0.000475"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:29.541679" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:29.541460" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:29.541426" 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-07T09:53:29.541918" elapsed="0.000048"/>
</return>
<status status="PASS" start="2026-04-07T09:53:29.541811" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:29.541796" elapsed="0.000228"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:29.542060" 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-07T09:53:29.545032" elapsed="0.000425"/>
</kw>
<kw name="Open 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-07T09:53:29.545653" elapsed="0.000206"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:29.546007" elapsed="0.000112"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:29.542457" elapsed="0.003717"/>
</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-07T09:53:29.170554" elapsed="0.375718"/>
</kw>
<msg time="2026-04-07T09:53:29.546338" 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-07T09:53:29.169694" elapsed="0.376735"/>
</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-07T09:53:29.169008" elapsed="0.377503"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-07T09:53:27.666148" elapsed="1.880422"/>
</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-07T09:53:29.548781" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:29.548442" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:29.548415" elapsed="0.000455"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:29.549224" 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-07T09:53:29.549338" 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-07T09:53:29.549057" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:29.549937" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.171.229" 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-07T09:53:29.549521" elapsed="0.000464"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:29.550528" 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-07T09:53:29.550137" elapsed="0.000418"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:29.551453" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:29.551749" 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-07T09:53:29.551150" elapsed="0.000625"/>
</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-07T09:53:29.551935" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:29.553149" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:29.883032" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:29 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:29.552819" elapsed="0.330498"/>
</kw>
<msg time="2026-04-07T09:53:29.883453" 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-07T09:53:29.552445" elapsed="0.331155"/>
</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-07T09:53:29.550787" elapsed="0.333027"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:29.884969" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-07T09:53:29.908312" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:29.908875" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:29.908974" 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-07T09:53:29.884280" elapsed="0.024751"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:29.909573" elapsed="0.000757"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:29.911436" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:29.910792" 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-07T09:53:29.912039" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:29.911750" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:29.911687" elapsed="0.000472"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:29.912457" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-07T09:53:29.912271" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:29.912217" elapsed="0.000384"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:29.912678" 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-07T09:53:29.917986" elapsed="0.000709"/>
</kw>
<kw name="Open 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-07T09:53:29.918974" elapsed="0.000314"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:29.919472" elapsed="0.000135"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:29.913285" elapsed="0.006428"/>
</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-07T09:53:29.547933" elapsed="0.371914"/>
</kw>
<msg time="2026-04-07T09:53:29.919937" 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-07T09:53:29.547267" elapsed="0.372791"/>
</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-07T09:53:29.546805" elapsed="0.373362"/>
</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-07T09:53:29.923151" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:29.922766" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:29.922733" elapsed="0.000522"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:29.923647" 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-07T09:53:29.923985" 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-07T09:53:29.923412" elapsed="0.000611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:29.924832" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.171.229" 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-07T09:53:29.924222" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:29.925618" 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-07T09:53:29.925105" elapsed="0.000568"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:29.926659" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:29.926741" 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-07T09:53:29.926303" 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-07T09:53:29.926966" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:29.928290" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:30.278613" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:29 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:29.927927" elapsed="0.351001"/>
</kw>
<msg time="2026-04-07T09:53:30.279064" 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-07T09:53:29.927537" elapsed="0.351675"/>
</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-07T09:53:29.925925" elapsed="0.353456"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:30.280185" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-07T09:53:30.487470" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:30.488019" level="INFO">${stdout} =  * Exiting ovs-vswitchd (4672)
 * Exiting ovsdb-server (4655)</msg>
<msg time="2026-04-07T09:53:30.488118" 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-07T09:53:30.279760" elapsed="0.208411"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:30.488745" elapsed="0.000774"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:30.490606" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:30.489976" 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-07T09:53:30.491085" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:30.490836" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:30.490788" elapsed="0.000397"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:30.491392" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-07T09:53:30.491255" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:30.491235" elapsed="0.000291"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:30.491574" elapsed="0.000018"/>
</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-07T09:53:30.494797" elapsed="0.000406"/>
</kw>
<kw name="Open 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-07T09:53:30.495371" elapsed="0.000206"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:30.495739" elapsed="0.000108"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:30.492064" elapsed="0.003837"/>
</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-07T09:53:29.922140" elapsed="0.573859"/>
</kw>
<msg time="2026-04-07T09:53:30.496217" 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-07T09:53:29.921200" elapsed="0.575102"/>
</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-07T09:53:29.920522" elapsed="0.575867"/>
</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-07T09:53:30.498667" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:30.498277" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:30.498255" elapsed="0.000538"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:30.499236" 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-07T09:53:30.499397" 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-07T09:53:30.499006" elapsed="0.000432"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:30.500325" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.171.229" 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-07T09:53:30.499677" elapsed="0.000746"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:30.501514" 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-07T09:53:30.500760" elapsed="0.000797"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:30.502861" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:30.502940" 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-07T09:53:30.502536" 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-07T09:53:30.503133" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:30.504376" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:30.849304" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:30 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:30.504040" elapsed="0.345561"/>
</kw>
<msg time="2026-04-07T09:53:30.849760" 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-07T09:53:30.503655" elapsed="0.346250"/>
</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-07T09:53:30.501964" elapsed="0.348140"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:30.850877" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-07T09:53:30.863660" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:30.863929" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:30.863995" 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-07T09:53:30.850449" elapsed="0.013580"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:30.864367" elapsed="0.000703"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:30.865937" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:30.865384" elapsed="0.000614"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:30.866468" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:30.866206" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:30.866151" elapsed="0.000442"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:30.866855" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-07T09:53:30.866699" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:30.866675" elapsed="0.000319"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:30.867042" 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">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:53:30.871216" elapsed="0.000520"/>
</kw>
<kw name="Open 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-07T09:53:30.871964" elapsed="0.000254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:30.872416" elapsed="0.000138"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:30.867557" elapsed="0.005097"/>
</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-07T09:53:30.497773" elapsed="0.375020"/>
</kw>
<msg time="2026-04-07T09:53:30.872876" 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-07T09:53:30.497084" elapsed="0.375893"/>
</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-07T09:53:30.496599" elapsed="0.376493"/>
</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-07T09:53:30.876074" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:30.875481" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:30.875454" elapsed="0.000738"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:30.876619" 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-07T09:53:30.876795" 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-07T09:53:30.876402" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:30.877588" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.171.229" 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-07T09:53:30.877058" elapsed="0.000620"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:30.878343" 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-07T09:53:30.877901" elapsed="0.000469"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:30.879367" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:30.879447" 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-07T09:53:30.879044" 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-07T09:53:30.879624" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:30.881033" level="INFO">Logging into '10.30.171.229:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:31.210422" 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  7 09:52:46 UTC 2026

  System load:  0.13               Processes:             108
  Usage of /:   19.5% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.229
  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  7 09:53:30 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:30.880678" elapsed="0.329942"/>
</kw>
<msg time="2026-04-07T09:53:31.210771" 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-07T09:53:30.880291" elapsed="0.330596"/>
</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-07T09:53:30.878680" elapsed="0.332335"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:31.211604" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-07T09:53:31.305444" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:31.305749" 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-07T09:53:31.305988" level="INFO">${stderr} = 2026-04-07T09:53:31Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:31Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:31Z|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-07T09:53:31.211303" elapsed="0.094743"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:31.306428" elapsed="0.000623"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:31.308144" level="INFO">2026-04-07T09:53:31Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:31Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:31Z|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-07T09:53:31.307464" elapsed="0.000783"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:31.308774" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:31.308430" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:31.308372" 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-07T09:53:31.309290" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-07T09:53:31.309057" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:31.309024" elapsed="0.000451"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:31.309548" 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-07T09:53:31.315575" elapsed="0.000483"/>
</kw>
<kw name="Open 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-07T09:53:31.316228" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:31.316552" elapsed="0.000121"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:31.310272" elapsed="0.006456"/>
</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-07T09:53:30.874838" elapsed="0.441989"/>
</kw>
<msg time="2026-04-07T09:53:31.316886" 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-07T09:53:30.874036" elapsed="0.442916"/>
</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-07T09:53:30.873373" elapsed="0.443661"/>
</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-07T09:53:27.665821" elapsed="3.651272"/>
</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-07T09:53:31.319957" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:31.319690" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:31.319669" elapsed="0.000368"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:31.320328" 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-07T09:53:31.320431" 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-07T09:53:31.320187" elapsed="0.000270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:31.321000" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.40" 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-07T09:53:31.320605" elapsed="0.000439"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:31.321551" 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-07T09:53:31.321191" elapsed="0.000386"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:31.322660" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:31.322739" 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-07T09:53:31.322135" elapsed="0.000627"/>
</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-07T09:53:31.322940" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:31.324236" level="INFO">Logging into '10.30.170.40:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:31.656379" 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  7 09:53:05 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.40
  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  7 09:53:08 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:31.323829" elapsed="0.332739"/>
</kw>
<msg time="2026-04-07T09:53:31.656680" 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-07T09:53:31.323462" elapsed="0.333335"/>
</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-07T09:53:31.321798" elapsed="0.335125"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:31.657470" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-04-07T09:53:32.806874" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:32.807329" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:32.807392" 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-07T09:53:31.657195" elapsed="1.150233"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:32.807898" elapsed="0.000522"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:32.809246" 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-07T09:53:32.808750" elapsed="0.000602"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:32.809737" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:32.809481" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:32.809436" elapsed="0.000401"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:32.810015" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-07T09:53:32.809895" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:32.809879" elapsed="0.000262"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:32.810180" 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-07T09:53:32.813174" elapsed="0.000448"/>
</kw>
<kw name="Open 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-07T09:53:32.813823" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:32.814225" elapsed="0.000112"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:32.810583" elapsed="0.003814"/>
</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-07T09:53:31.319193" elapsed="1.495305"/>
</kw>
<msg time="2026-04-07T09:53:32.814567" 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-07T09:53:31.318407" elapsed="1.496266"/>
</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-07T09:53:31.317969" elapsed="1.496792"/>
</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-07T09:53:32.817230" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:32.816800" elapsed="0.000677"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:32.816766" elapsed="0.000754"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:32.818027" 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-07T09:53:32.818195" 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-07T09:53:32.817777" elapsed="0.000459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:32.819117" 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.40" 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-07T09:53:32.818460" elapsed="0.000731"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:32.820026" level="INFO">${conn_id} = 183</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-07T09:53:32.819421" elapsed="0.000643"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:32.822095" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:32.822201" 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-07T09:53:32.821571" elapsed="0.000656"/>
</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-07T09:53:32.822411" elapsed="0.000427"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:32.824004" level="INFO">Logging into '10.30.170.40:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:33.147703" 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  7 09:53:05 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.40
  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  7 09:53:31 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:32.823463" elapsed="0.324519"/>
</kw>
<msg time="2026-04-07T09:53:33.148109" 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-07T09:53:32.823027" elapsed="0.325230"/>
</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-07T09:53:32.820429" elapsed="0.327996"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:33.149209" 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-07T09:53:33.192718" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-04-07T09:53:33.193212" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:33.193309" 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-07T09:53:33.148811" elapsed="0.044553"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:33.194203" elapsed="0.000758"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:33.196196" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:33.195393" elapsed="0.000897"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:33.196858" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:33.196486" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:33.196425" elapsed="0.000600"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:33.197375" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-07T09:53:33.197140" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:33.197107" elapsed="0.000472"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:33.197684" 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-07T09:53:33.203111" elapsed="0.000391"/>
</kw>
<kw name="Open 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-07T09:53:33.203681" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:33.204016" 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-07T09:53:33.198479" elapsed="0.005693"/>
</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-07T09:53:32.816135" elapsed="0.388132"/>
</kw>
<msg time="2026-04-07T09:53:33.204457" 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-07T09:53:32.815481" elapsed="0.389053"/>
</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-07T09:53:32.814975" elapsed="0.389640"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-04-07T09:53:31.317667" elapsed="1.887031"/>
</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-07T09:53:33.206903" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:33.206583" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:33.206562" elapsed="0.000425"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:33.207286" 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-07T09:53:33.207397" 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-07T09:53:33.207131" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:33.207967" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.40" 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-07T09:53:33.207567" elapsed="0.000445"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:33.208869" 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-07T09:53:33.208159" elapsed="0.000737"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:33.209822" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:33.209933" 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-07T09:53:33.209496" elapsed="0.000462"/>
</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-07T09:53:33.210114" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:33.211366" level="INFO">Logging into '10.30.170.40:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:33.523676" 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  7 09:53:05 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.40
  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  7 09:53:33 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:33.211025" elapsed="0.312925"/>
</kw>
<msg time="2026-04-07T09:53:33.524079" 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-07T09:53:33.210648" elapsed="0.313571"/>
</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-07T09:53:33.209110" elapsed="0.315273"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:33.525218" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-04-07T09:53:33.548766" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:33.549335" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:33.549446" 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-07T09:53:33.524786" elapsed="0.024716"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:33.550121" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:33.552291" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:33.551489" elapsed="0.000894"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:33.552994" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:33.552590" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:33.552522" 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-07T09:53:33.553754" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-07T09:53:33.553473" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:33.553438" elapsed="0.000530"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:33.554045" 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-07T09:53:33.560291" elapsed="0.000630"/>
</kw>
<kw name="Open 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-07T09:53:33.561128" elapsed="0.000248"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:33.561527" elapsed="0.000136"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:33.554955" elapsed="0.006772"/>
</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-07T09:53:33.206069" elapsed="0.355769"/>
</kw>
<msg time="2026-04-07T09:53:33.561933" 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-07T09:53:33.205354" elapsed="0.356692"/>
</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-07T09:53:33.204897" elapsed="0.357239"/>
</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-07T09:53:33.564665" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:33.564274" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:33.564241" elapsed="0.000526"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:33.565535" 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-07T09:53:33.565690" 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-07T09:53:33.564931" elapsed="0.000789"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:33.566299" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.40" 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-07T09:53:33.565872" elapsed="0.000473"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:33.567020" 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-07T09:53:33.566564" elapsed="0.000483"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:33.568033" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:33.568114" 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-07T09:53:33.567687" 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-07T09:53:33.568301" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:33.569592" level="INFO">Logging into '10.30.170.40:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:33.884719" 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  7 09:53:05 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.40
  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  7 09:53:33 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:33.569241" elapsed="0.315704"/>
</kw>
<msg time="2026-04-07T09:53:33.885048" 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-07T09:53:33.568879" elapsed="0.316293"/>
</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-07T09:53:33.567280" elapsed="0.318155"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:33.886124" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-04-07T09:53:33.928536" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:33.928854" level="INFO">${stdout} =  * Exiting ovs-vswitchd (2070)
 * Exiting ovsdb-server (2053)</msg>
<msg time="2026-04-07T09:53:33.928956" 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-07T09:53:33.885762" elapsed="0.043245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:33.929366" elapsed="0.000811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:33.931600" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:33.930820" elapsed="0.000918"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:33.932302" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:33.931942" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:33.931877" 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-07T09:53:33.932864" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-07T09:53:33.932590" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:33.932558" elapsed="0.000491"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:33.933122" 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-07T09:53:33.938277" elapsed="0.000486"/>
</kw>
<kw name="Open 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-07T09:53:33.938997" elapsed="0.000233"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:33.939424" elapsed="0.000130"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:33.933878" elapsed="0.005766"/>
</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-07T09:53:33.563707" elapsed="0.376069"/>
</kw>
<msg time="2026-04-07T09:53:33.939853" 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-07T09:53:33.562983" elapsed="0.376955"/>
</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-07T09:53:33.562418" elapsed="0.377627"/>
</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-07T09:53:33.942924" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:33.942522" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:33.942495" elapsed="0.000576"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:33.943469" 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-07T09:53:33.943612" 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-07T09:53:33.943268" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:33.944394" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.40" 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-07T09:53:33.943871" elapsed="0.000586"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:33.945206" 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-07T09:53:33.944690" elapsed="0.000553"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:33.946450" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:33.946555" 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-07T09:53:33.946043" 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-07T09:53:33.946819" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:33.948358" level="INFO">Logging into '10.30.170.40:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:34.258229" 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  7 09:53:05 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.40
  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  7 09:53:33 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:33.948010" elapsed="0.310473"/>
</kw>
<msg time="2026-04-07T09:53:34.258597" 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-07T09:53:33.947606" elapsed="0.311148"/>
</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-07T09:53:33.945534" elapsed="0.313373"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:34.259672" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-04-07T09:53:34.271923" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:34.272204" level="INFO">${stdout} = </msg>
<msg time="2026-04-07T09:53:34.272299" 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-07T09:53:34.259240" elapsed="0.013108"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:34.272790" elapsed="0.001013"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:34.275156" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-07T09:53:34.274443" elapsed="0.000805"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:34.275878" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:34.275515" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:34.275377" elapsed="0.000664"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:34.276381" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-07T09:53:34.276155" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:34.276123" elapsed="0.000437"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:34.276609" 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">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-07T09:53:34.281076" elapsed="0.000492"/>
</kw>
<kw name="Open 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-07T09:53:34.281826" elapsed="0.000252"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:34.282285" elapsed="0.000151"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:34.277127" elapsed="0.005387"/>
</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-07T09:53:33.941838" elapsed="0.340834"/>
</kw>
<msg time="2026-04-07T09:53:34.282757" 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-07T09:53:33.940950" elapsed="0.341906"/>
</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-07T09:53:33.940313" elapsed="0.342654"/>
</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-07T09:53:34.285727" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-07T09:53:34.285419" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:34.285400" elapsed="0.000408"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:34.286120" 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-07T09:53:34.286228" 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-07T09:53:34.285962" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:34.286940" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.40" 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-07T09:53:34.286490" elapsed="0.000497"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-07T09:53:34.287554" 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-07T09:53:34.287138" elapsed="0.000442"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-07T09:53:34.288558" level="INFO">Length is 0.</msg>
<msg time="2026-04-07T09:53:34.288653" 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-07T09:53:34.288251" elapsed="0.000427"/>
</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-07T09:53:34.288829" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-07T09:53:34.289985" level="INFO">Logging into '10.30.170.40:22' as 'jenkins'.</msg>
<msg time="2026-04-07T09:53:34.629787" 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  7 09:53:05 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.40
  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  7 09:53:34 2026 from 10.30.171.129
[?2004h[jenkins@releng-39784-168-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-07T09:53:34.289669" elapsed="0.340368"/>
</kw>
<msg time="2026-04-07T09:53:34.630153" 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-07T09:53:34.289308" elapsed="0.340979"/>
</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-07T09:53:34.287905" elapsed="0.342535"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-07T09:53:34.631281" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-04-07T09:53:34.714959" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-07T09:53:34.715263" 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-07T09:53:34.715369" level="INFO">${stderr} = 2026-04-07T09:53:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53: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-07T09:53:34.630864" elapsed="0.084559"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:34.715852" elapsed="0.000578"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-07T09:53:34.717670" level="INFO">2026-04-07T09:53:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53:34Z|00001|dns_resolve|WARN|Failed to read etc/hosts: syntax error
2026-04-07T09:53: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-07T09:53:34.716919" 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-07T09:53:34.718331" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-07T09:53:34.717989" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:34.717922" elapsed="0.000583"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-07T09:53:34.718898" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-07T09:53:34.718653" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-07T09:53:34.718591" elapsed="0.000498"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-07T09:53:34.719163" 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-07T09:53:34.723508" elapsed="0.000540"/>
</kw>
<kw name="Open 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-07T09:53:34.724297" elapsed="0.000244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-07T09:53:34.724774" elapsed="0.000135"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-07T09:53:34.719957" elapsed="0.005022"/>
</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-07T09:53:34.284919" elapsed="0.440186"/>
</kw>
<msg time="2026-04-07T09:53:34.725289" 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-07T09:53:34.284141" elapsed="0.441241"/>
</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-07T09:53:34.283305" elapsed="0.442188"/>
</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-07T09:53:31.317310" elapsed="3.408285"/>
</kw>
<status status="PASS" start="2026-04-07T09:53:27.665530" elapsed="7.060170"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:34.726490" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:34.725927" elapsed="0.001179">Non-existing index or alias 'session'.</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:34.727722" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:34.727338" elapsed="0.000851">Non-existing index or alias 'session'.</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:34.728786" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:34.728423" elapsed="0.000652">Non-existing index or alias 'session'.</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:34.729505" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:34.729239" elapsed="0.000569">Non-existing index or alias 'session'.</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:34.730225" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:34.729969" elapsed="0.000534">Non-existing index or alias 'session'.</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:34.730924" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:34.730681" elapsed="0.000525">Non-existing index or alias 'session'.</status>
</kw>
<kw name="Log Config And Operational Topology" owner="OVSDB">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:34.731919" level="INFO">${resp} = None</msg>
<msg time="2026-04-07T09:53:34.731961" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:34.731677" elapsed="0.000625">Non-existing index or alias 'session'.</status>
</kw>
<kw name="Log Content" owner="Utils">
<msg time="2026-04-07T09:53:34.737247" level="FAIL">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</msg>
<arg>${resp.text}</arg>
<status status="FAIL" start="2026-04-07T09:53:34.732615" elapsed="0.004669">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:34.737717" level="INFO">${resp} = None</msg>
<msg time="2026-04-07T09:53:34.737760" level="FAIL">Non-existing index or alias 'session'.</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="FAIL" start="2026-04-07T09:53:34.737440" elapsed="0.000611">Non-existing index or alias 'session'.</status>
</kw>
<kw name="Log Content" owner="Utils">
<msg time="2026-04-07T09:53:34.740300" level="FAIL">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</msg>
<arg>${resp.text}</arg>
<status status="FAIL" start="2026-04-07T09:53:34.738340" elapsed="0.001993">Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<doc>For debugging purposes, this will log both config and operational topo data stores</doc>
<status status="FAIL" start="2026-04-07T09:53:34.731440" elapsed="0.009040">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

3) Non-existing index or alias 'session'.

4) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-07T09:53:34.740788" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-07T09:53:34.740696" elapsed="0.000182"/>
</kw>
<doc>Cleans up test environment, close existing sessions.</doc>
<status status="FAIL" start="2026-04-07T09:53:27.665342" elapsed="7.075660">Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Non-existing index or alias 'session'.

4) Non-existing index or alias 'session'.

5) Non-existing index or alias 'session'.

6) Non-existing index or alias 'session'.

7) Non-existing index or alias 'session'.

8) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

9) Non-existing index or alias 'session'.

10) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</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-07T09:53:23.967329" elapsed="10.773788">Suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.170.169

Also suite teardown failed:
Several failures occurred:

1) Non-existing index or alias 'session'.

2) Non-existing index or alias 'session'.

3) Non-existing index or alias 'session'.

4) Non-existing index or alias 'session'.

5) Non-existing index or alias 'session'.

6) Non-existing index or alias 'session'.

7) Non-existing index or alias 'session'.

8) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'

9) Non-existing index or alias 'session'.

10) Resolving variable '${resp.text}' failed: AttributeError: 'NoneType' object has no attribute 'text'</status>
</suite>
<status status="FAIL" start="2026-04-07T09:52:41.615909" elapsed="53.126922"/>
</suite>
<statistics>
<total>
<stat pass="0" fail="121" 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="121" skip="0">southbound</stat>
</tag>
<suite>
<stat name="ovsdb-upstream-southbound.txt" id="s1" pass="0" fail="121" skip="0">ovsdb-upstream-southbound.txt</stat>
<stat name="Connection Manager" id="s1-s1" pass="0" fail="18" skip="0">ovsdb-upstream-southbound.txt.Connection Manager</stat>
<stat name="Configure Exit Ovsdb Node" id="s1-s2" pass="0" fail="22" skip="0">ovsdb-upstream-southbound.txt.Configure Exit Ovsdb Node</stat>
<stat name="Vxlan Extension Test" id="s1-s3" pass="0" fail="17" skip="0">ovsdb-upstream-southbound.txt.Vxlan Extension Test</stat>
<stat name="Configure 1 Ovsdb Node" id="s1-s4" pass="0" fail="35" skip="0">ovsdb-upstream-southbound.txt.Configure 1 Ovsdb Node</stat>
<stat name="Configure Exit Ovsdb Node" id="s1-s5" pass="0" fail="22" 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>
